首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用GCD对异步后台任务进行排序?

如何使用GCD对异步后台任务进行排序?
EN

Stack Overflow用户
提问于 2011-08-26 23:19:47
回答 2查看 1.5K关注 0票数 2

我在iOS上使用GCD在后台线程上执行一个耗时的任务。API有一个start方法,它接受两个块作为参数,这两个块都是在主队列上调用的。第一个在任务开始时调用,第二个在任务完成时调用。这一切都行得通。

实际上,我需要完成其中一些耗时的任务。API允许我同时启动它们,然后等待它们完成,并通过这些块更新UI。它们同时运行。

然而,我实际上想要做的是对耗时的任务进行排序(仍然使用所描述的API启动每个任务),这样我就可以同时启动所有任务,让第一个任务运行并给我回调,然后让第二个任务运行并给我回调,等等,直到所有任务都完成。

使用GCD和块实现这一点的最佳方法是什么?

如果这些任务是同步的,我只会有一个循环,依次运行每个任务,然后异步运行所有这些任务。但是我有回调,所以这不会起作用。我不希望必须链接它们,因为一旦启动了事件序列,导致所有这一切发生的对象就会消失。

EN

回答 2

Stack Overflow用户

发布于 2011-08-26 23:24:56

您可以创建自己的串行队列,该队列将使用dispatch_queue_create以先进先出的顺序执行。您不需要指定它是串行队列。默认情况下,它将以这种方式运行。

队列创建示例:

代码语言:javascript
运行
复制
dispatch_queue_t my_q = dispatch_queue_create("Serial",NULL);

您拥有这个队列,所以不释放它(使用dispatch_release)将会泄漏它。

有关更多信息,请访问Apple's docs here

票数 1
EN

Stack Overflow用户

发布于 2011-08-27 00:05:27

有没有什么特别的原因让你不得不使用GCD?听起来并发性为1的NSOperationQueue正是您想要的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7206943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档