void dispatch_barrier_async ( dispatch_queue_t queue, dispatch_block_t block );
參數
queue: 將barrier添加到那個隊列
block: barrier block 代碼塊
下面內容翻譯自官方文檔
一個dispatch barrier 允許在一個并發隊列中創建一個同步點。當在并發隊列中遇到一個barrier, 他會延遲執行barrier的block,等待所有在barrier之前提交的blocks執行結束。 這時,barrier block自己開始執行。 之后, 隊列繼續正常的執行操作。
調用這個函數總是在barrier block被提交之后立即返回,不會等到block被執行。當barrier block到并發隊列的最前端,他不會立即執行。相反,隊列會等到所有當前正在執行的blocks結束執行。到這時,barrier才開始自己執行。所有在barrier block之后提交的blocks會等到barrier block結束之后才執行。
這里指定的并發隊列應該是自己通過dispatch_queue_create函數創建的。如果你傳的是一個串行隊列或者全局并發隊列,這個函數等同于dispatch_async函數。