首页 文章

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

提问于
浏览
3

在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 回答

  • 5

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

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

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

相关问题