2014-02-15 2 views
3

Я создаю несколько параллельных очередей в своем приложении. dispatch_barrier_sync используется для изменения общего ресурса.Очереди диспетчерского барьера в GCD (iOS)

Будет ли dispatch_barrier_sync выполнять параллельное выполнение только в текущей очереди или во всех очередях?

Например, у меня есть 3 пользовательских параллельных очередей «A», «B» и «C». Если я отправлю блок dispatch_barrier_sync в очередь «А», он будет блокировать параллельное выполнение от «В» и «С»? Или только в «А»?

+1

Чему вы научились из тестового кода, который вы написали, чтобы исследовать это? –

+0

@JoshCaswell Я еще не закодирован полностью .. Я хотел знать, что происходит в этом случае. Так что я могу переписать его, если не ошибаюсь – Karthik207

+0

Я не спрашивал, как выглядит ваш полный код, я спросил, что произошло, когда вы написали несколько быстрых _tests_. –

ответ

2

Только A. Точно это ничего не будет блокировать. Он будет просто ждать, пока все задачи в A будут завершены. B и C будут работать как обычно и могут вызывать их блоки.

https://developer.apple.com/library/mac/documentation/performance/reference/gcd_libdispatch_ref/Reference/reference.html#//apple_ref/c/func/dispatch_barrier_sync

Смежные вопросы