dispatch_barrier柵欄函數(shù)的作用就不用我多說了盾舌。常見的使用場景經(jīng)常
1论笔、多線程操作同一數(shù)據(jù)進(jìn)行 多讀單寫 線程安全控制赚瘦;
2爹谭、多線程執(zhí)行不同任務(wù)的前后時序控制祟牲;
思考一個問題隙畜,串行隊列還有必要使用dispatch_barrier柵欄函數(shù)嗎?
很顯然说贝,dispatch_barrier在串行隊列上發(fā)揮不了作用议惰。
因此,dispatch_barrier一般配合的是并發(fā)隊列乡恕。
請看下面截圖代碼
截屏2020-05-25 下午6.03.57.png
你覺得輸出結(jié)果是言询?
任務(wù)1,任務(wù)2隨意傲宜,任務(wù)3一定在任務(wù)1运杭,任務(wù)2后,任務(wù)4一定在任務(wù)3后函卒?
不好意思太天真了辆憔。
任務(wù)1,任務(wù)2报嵌,任務(wù)3虱咧,任務(wù)4都是隨意的。
內(nèi)心mmp锚国?怎么搞得腕巡?
罪魁禍?zhǔn)拙褪悄惬@取的是系統(tǒng)級別的全局并發(fā)隊列,
解決辦法血筑,自己創(chuàng)建一個自定義的并發(fā)隊列绘沉。
正確的姿勢:
截屏2020-05-25 下午6.07.48.png