Ios5 中央大调度:我如何等待街区排队完成?

Ios5 中央大调度:我如何等待街区排队完成?,ios5,grand-central-dispatch,Ios5,Grand Central Dispatch,在iOS中,我有一个应用程序,需要等待GCD队列中当前正在运行的块完成。我的印象是这一行代码可以做到: dispatch\u sync(dispatch\u get\u global\u queue(dispatch\u queue\u PRIORITY\u HIGH,0),^{} 我从这里得到了以下提示: 据我所知,这行代码将阻止子序列执行,直到全局队列上运行的所有任务完成。在我的代码中,这似乎没有发生。有人能提出一种方法来做到这一点吗 谢谢, Doug调度同步()技巧只适用于串行队列,这就

在iOS中,我有一个应用程序,需要等待GCD队列中当前正在运行的块完成。我的印象是这一行代码可以做到:

dispatch\u sync(dispatch\u get\u global\u queue(dispatch\u queue\u PRIORITY\u HIGH,0),^{}

我从这里得到了以下提示:

据我所知,这行代码将阻止子序列执行,直到全局队列上运行的所有任务完成。在我的代码中,这似乎没有发生。有人能提出一种方法来做到这一点吗

谢谢,
Doug

调度同步()技巧只适用于串行队列,这就是教程所展示的。
dispatch\u get\u global\u queue()
返回一个并发队列,请参阅:

提交到这些全局并发队列的块可以彼此并发执行


要处理全局并发队列,您应该使用提交块的组(也在该教程中提到),并使用
dispatch\u group\u wait()

宾果等待整个组。这确实是问题所在。切换到顺序FIFO队列现在可以工作了。非常感谢Grzegorz。如果您已经在队列中,它将不起作用,因为它将死锁。