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

dug*_*gla 3 grand-central-dispatch ios5

在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/

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

谢谢,
道格

Grz*_*icz 5

dispatch_sync() 技巧仅适用于串行队列,这是本教程所展示的.该dispatch_get_global_queue()回报并发队列,看它的文档注:

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

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