1分鐘看懂dispatch_barrier_async與dispatch_barrier_sync區(qū)別

在常用的SDWebImageDownloaderOperation類文件中我夢會看到dispatch_barrier_async(self.barrierQueue, ^{

[self.callbackBlocksaddObject:callbacks];

});對dispatch_barrier_async。那么我們?nèi)绾卫斫鈊ispatch_barrier_async通過下面這段代碼的log時間可以很清晰的看到。

可以看到patch_barrier_async 效果類似 dispatch_async,區(qū)別就是中間多了一個barrier,barrier顧名思義就是屏障的意思,將隊(duì)列一分為2,前面的代碼執(zhí)行完才能執(zhí)行dispatch_barrier_async中的任務(wù),最后執(zhí)行隊(duì)列后的任務(wù)。



可以看到patch_barrier_sync 效果類似 patch_barrier_async,都是將隊(duì)列一分為2,前面的代碼執(zhí)行完才能執(zhí)行dispatch_barrier_sync中的任務(wù),最后執(zhí)行隊(duì)列后的任務(wù)。但是dispatch_barrier_sync是在主線程中執(zhí)行,dispatch_barrier_async是在子線程中執(zhí)行。如果有界面相關(guān)功能的代碼,或者需要立即執(zhí)行的代碼,就可以使用dispatch_barrier_sync。其他情況均可用dispatch_barrier_async在子線程中完成。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容