dispatch_barrier_async似乎对全局队列没有影响?

Mic*_*Mao 2 ios ios-multithreading

当我尝试 GCD 函数时dispatch_barrier_async,它在由 创建的队列上按预期工作dispatch_queue_create,而当我将它放在由 创建的全局队列上时dispatch_get_global_queue,屏障似乎不再起作用= =,有人可以解释吗?谢谢~ 演示图

Abi*_*ern 5

这并不奇怪,这是有记录的行为。

如果您使用它向您自己创建的队列添加一个块,那么它将阻塞所有其他块,直到完成。如果将其添加到公共队列中,那么它的行为就像dispatch_async

文档位于https://developer.apple.com/reference/dispatch/1452797-dispatch_barrier_async

其中指出:

您指定的队列应该是您使用dispatch_queue_create函数自己创建的并发队列。如果传递给此函数的队列是串行队列或全局并发队列之一,则此函数的行为类似于dispatch_async函数。