Grand Central Dispatch:我如何等待块的队列完成?

时间:2012-02-19 23:34:35

标签: ios5 grand-central-dispatch

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

dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{});

我从这里得到了这个提示:

http://www.fieryrobot.com/blog/2010/06/27/a-simple-job-queue-with-grand-central-dispatch/

据我了解,这行代码将阻止子序列执行,直到全局队列上运行的所有任务完成。在我的代码中,这似乎并没有发生。有人可以建议一种方法吗?

谢谢,
道格

1 个答案:

答案 0 :(得分:5)

dispatch_sync() 技巧仅适用于串行队列,这是本教程所展示的内容。 dispatch_get_global_queue()返回并发队列,请参阅it's documentation note

  

提交给这些全局并发队列的块可以相互同时执行。

要处理全局并发队列,您应该使用提交块的组,也在该教程中提及,并等待整个组dispatch_group_wait()