swift 2.0 和 3.0的多線程的區(qū)別
swift 2.0多線程的基礎(chǔ)使用
dispatch_async(dispatch_get_global_queue(0, 0)) { () -> Void in
print("加載數(shù)據(jù)", [NSThread.currentThread()])
dispatch_async(dispatch_get_main_queue(), { () -> Void in
callBack()
})
}
swift 3.0 多線程
//最常用模板
//全局隊列異步執(zhí)行
DispatchQueue.global().async {
//耗時操作
DispatchQueue.main.async {
//回到主線程
}
}
//創(chuàng)建新隊列
DispatchQueue(label: "newQueue", attributes: .concurrent, target: nil).async {
//并行隊列異步執(zhí)行
}
//創(chuàng)建新隊列
DispatchQueue(label: "newQueueAsync", attributes: .concurrent, target: nil).async {
//并行隊列異步執(zhí)行
}
//創(chuàng)建新隊列
DispatchQueue(label: "newQueueSync", attributes: .concurrent, target: nil).sync {
//并行隊列同步執(zhí)行
}
//創(chuàng)建新隊列
DispatchQueue(label: "newQueueAsync").async {
//串行隊列異步執(zhí)行
}
//創(chuàng)建新隊列
DispatchQueue(label: "newQueueAsync").async {
//串行隊列異步執(zhí)行
}
let delay:TimeInterval = 3
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + delay) {
//3秒后在主線程執(zhí)行
}
dispatch_block_t在swift3.0已經(jīng)沒了
dispatch_block_t等價于() -> void
dispatch_queue_t等價于DispatchQueue