当它们被放在一个并发队列中(虽然我理解这个概念!)。
我的 iOS 框架中有一个自定义并发队列。因此,如果按以下顺序插入 block ,例如:
CustomConcurrentQueue ->
- dispacth_sync block
- dispatch_barrier_sync block
- dispatch_async block
- dispatch_async_barrier block
- dispatch_sync_barrier block
- dispatch_sync block.
执行顺序是什么。谁能给我解释清楚吗?谢谢。
最佳答案
我估计他们会按照这个顺序执行(即开始然后完成)。
既然你知道开始顺序,我假设它们都是从同一个队列(可能是主队列?)调用的。
- 调度同步。运行。在此返回之前不会开始第 2 步。
- dispatch_barrier_sync。等待任何先前的 block 完成(但没有)。运行。此 block 完成之前不会开始第 3 步。
- dispatch_async。开始。
- dispatch_barrier_async。等待步骤 3 中的 block 完成,然后开始。
- dispatch_barrier_sync。等待步骤 4 中的 block 完成,然后运行。在此完成之前不会开始第 6 步。
- 调度同步。运行。程序仅在返回时继续。
关于ios - 在 iOS 中调度并发队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21848764/