当我尝试 GCD 函数 dispatch_barrier_async 时,它在 dispatch_queue_create 创建的队列上按预期工作,而当我将它放在 创建的全局队列上时dispatch_get_global_queue ,屏障似乎不再起作用了= =,有人可以解释一下吗?谢谢~
the demo image
Best Answer-推荐答案 strong>
这并不奇怪,这是记录在案的行为。
如果您使用它向您自己创建的队列添加一个 block ,那么它将阻止所有其他 block ,直到它完成。如果将它添加到公共(public)队列,那么它的行为就像 dispatch_async
文档位于 https://developer.apple.com/reference/dispatch/1452797-dispatch_barrier_async
其中规定:
The queue you specify should be a concurrent queue that you create yourself using the dispatch_queue_create function. If the queue you pass to this function is a serial queue or one of the global concurrent queues, this function behaves like the dispatch_async function.
关于ios - dispatch_barrier_async 似乎对全局队列没有影响?,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/38683113/
|