面試題之dispatch_barrier_async

void dispatch_barrier_async ( dispatch_queue_t queue, dispatch_block_t block );

參數(shù)

queue: 將barrier添加到那個(gè)隊(duì)列
block: barrier block 代碼塊

下面內(nèi)容翻譯自官方文檔

一個(gè)dispatch barrier 允許在一個(gè)并發(fā)隊(duì)列中創(chuàng)建一個(gè)同步點(diǎn)。當(dāng)在并發(fā)隊(duì)列中遇到一個(gè)barrier, 他會(huì)延遲執(zhí)行barrier的block,等待所有在barrier之前提交的blocks執(zhí)行結(jié)束。 這時(shí),barrier block自己開(kāi)始執(zhí)行。 之后, 隊(duì)列繼續(xù)正常的執(zhí)行操作。

調(diào)用這個(gè)函數(shù)總是在barrier block被提交之后立即返回,不會(huì)等到block被執(zhí)行。當(dāng)barrier block到并發(fā)隊(duì)列的最前端,他不會(huì)立即執(zhí)行。相反,隊(duì)列會(huì)等到所有當(dāng)前正在執(zhí)行的blocks結(jié)束執(zhí)行。到這時(shí),barrier才開(kāi)始自己執(zhí)行。所有在barrier block之后提交的blocks會(huì)等到barrier block結(jié)束之后才執(zhí)行。

這里指定的并發(fā)隊(duì)列應(yīng)該是自己通過(guò)dispatch_queue_create函數(shù)創(chuàng)建的。如果你傳的是一個(gè)串行隊(duì)列或者全局并發(fā)隊(duì)列,這個(gè)函數(shù)等同于dispatch_async函數(shù)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • GCD筆記 總結(jié)一下多線程部分,最強(qiáng)大的無(wú)疑是GCD,那么先從這一塊部分講起. Dispatch Queue的種類...
    jins_1990閱讀 789評(píng)論 0 1
  • Managing Units of Work(管理工作單位) 調(diào)度塊允許您直接配置隊(duì)列中各個(gè)工作單元的屬性。它們還...
    edison0428閱讀 8,051評(píng)論 0 1
  • GCD (Grand Central Dispatch) :iOS4 開(kāi)始引入,使用更加方便,程序員只需要將任務(wù)添...
    池鵬程閱讀 1,366評(píng)論 0 2
  • ———————————————回答好下面的足夠了---------------------------------...
    恒愛(ài)DE問(wèn)候閱讀 1,762評(píng)論 0 4
  • 今天看了朋友推薦的驚天破,說(shuō)實(shí)話看完后不知道該從哪下嘴吐槽。 劉青云與謝霆鋒本來(lái)是吸引我的一個(gè)點(diǎn),我單蠢的以為這是...
    魚(yú)塘沒(méi)有魚(yú)閱讀 312評(píng)論 0 0