//MARK:后臺(tái)執(zhí)行
dispatch_async(dispatch_get_global_queue(0,0), { () ->Void in
})
//MARK:主線程執(zhí)行
dispatch_async(dispatch_get_main_queue(), { () ->Void in
})
//MARK:一次性執(zhí)行
var once =dispatch_once_t()
dispatch_once(&once) { () ->Void in
}
//MARK:延遲兩秒執(zhí)行
let delaySecends:UInt64 = 2
let popTime = dispatch_time(DISPATCH_TIME_NOW,Int64(delaySecends *NSEC_PER_SEC))
dispatch_after(popTime,dispatch_get_main_queue()) { () ->Void in
}
//MARK:自定義線程
let myqueue = dispatch_queue_create("abcdef",nil)
dispatch_async(myqueue, { () ->Void in
})
//MARK:并發(fā)執(zhí)行
var queueGroup = dispatch_group_create()
dispatch_group_async(queueGroup,dispatch_get_global_queue(0,0)) { () ->Void in
//線程1
}
dispatch_group_async(queueGroup,dispatch_get_global_queue(0,0)) { () ->Void in
//線程2
}
dispatch_group_notify(queueGroup,dispatch_get_global_queue(0,0)) { () ->Void in
//匯總結(jié)果
}
Example1:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), {
? ? ? ?//需要長(zhǎng)時(shí)間處理的代碼
? ? ? ?dispatch_async(dispatch_get_main_queue(), {
? ? ? ? ? ? //需要主線程執(zhí)行的代碼
? ? ? ?})
})
Example2:如果運(yùn)行一系列的任務(wù)拯刁,希望當(dāng)任務(wù)全部結(jié)束后運(yùn)行另一個(gè)特殊的任務(wù)這種場(chǎng)景就是用下面的寫(xiě)法
let queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
let group = dispatch_group_create()
for(id obj in array)
dispatch_group_async(group, queue, {
self.doWork(obj)
})
dispatch_group_notify(group, queue, {
self.doneWork
})