swift多线程

swift 2.0 和 3.0的多线程的区别

swift 2.0多线程的基础使用

dispatch_async(dispatch_get_global_queue(0, 0)) { () -> Void in
print("加载数据", [NSThread.currentThread()])
dispatch_async(dispatch_get_main_queue(), { () -> Void in
callBack()
})
}

swift 3.0 多线程

//最常用模板
//全局队列异步执行
DispatchQueue.global().async {
//耗时操作
DispatchQueue.main.async {
//回到主线程
}
}

//创建新队列
DispatchQueue(label: "newQueue", attributes: .concurrent, target: nil).async {
//并行队列异步执行
}

//创建新队列
DispatchQueue(label: "newQueueAsync", attributes: .concurrent, target: nil).async {
//并行队列异步执行
}

//创建新队列
DispatchQueue(label: "newQueueSync", attributes: .concurrent, target: nil).sync {
//并行队列同步执行
}

//创建新队列
DispatchQueue(label: "newQueueAsync").async {
//串行队列异步执行
}

//创建新队列
DispatchQueue(label: "newQueueAsync").async {
//串行队列异步执行
}

let delay:TimeInterval = 3
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + delay) {
//3秒后在主线程执行
}

dispatch_block_t在swift3.0已经没了
dispatch_block_t等价于() -> void
dispatch_queue_t等价于DispatchQueue

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容