Grand Central Dispatch和并发任务

App*_*Dev 3 concurrency multithreading grand-central-dispatch ios

我需要执行三个彼此独立的任务,所以我想同时执行它们.但我需要他们所有人完成通知另一个对象.AFAIK,*dispatch_apply*创建并发线程,但它迭代一个集合或一个对象数组,并执行相同的任务多个循环,我想为每个线程执行不同的任务.使用GCD可以做我想做的事吗?如果没有,那么最好的方法是什么?

谢谢!

Kur*_*vis 6

用一个dispatch_group." 并发编程指南"给出了一个示例,还有更多API可能对您有所帮助.

  • 使用创建调度组dispatch_group_create.
  • 通过使用将它们排队,将每个"任务"放入组中dispatch_group_async.

    (或者,在每个任务开始和停止时手动告诉GCD,使用dispatch_group_enterdispatch_group_leave.)

  • 要在组中的所有任务完成后运行块,请使用它进行排队dispatch_group_notify.

    (或者,在不太可能的情况下,您的应用程序的设计允许您同步等待,请dispatch_group_wait改为使用.)

  • 当你完成这个小组的dispatch_release时候.