在点dispatch_group_async考虑在执行具有回调的异步任务时完成的任务

时间:2015-03-03 05:39:59

标签: ios

  • 我一起提出三个async个请求,所有这些请求都需要等待才能继续前进。

  • 我已阅读以下内容以同步异步请求

Waiting until two async blocks are executed before starting another block

dispatch_group_async(group, queue, ^ {
...
});

运行任务异步。但我的任务本身async,它会调用回调处理程序。

那么,什么时候我的任务会在dispatch_group_async的上下文中声明完成

当我的回调被执行时,它会被调用吗?

如果您能提供将要发生的事件序列,那么我的任务将被宣布完成将非常有帮助

1 个答案:

答案 0 :(得分:1)

如果你发送一个异步任务,比如“任务B”,在dispatch_group_async内,说“任务A”,那么任务A一旦到达任务A块结束就会被认为是完成的,即使任务B可能仍在执行中。

所以,给定

dispatch_async_group(group,queue, ^{ 
      [someAsyncTask B];
});

dispatch_async_group(group,queue, ^{ 
      [someAsyncTask C];
});

dispatch_async_group(group,queue, ^{ 
      [someAsyncTask D];
});

dispatch_group_wait(group,10000);

即使任务B / C / D可能仍在运行,dispatch_group_wait将在最终dispatch_async_group块完成后立即返回。

如果对B / C / D任务使用同步调度,则在B,C和C之后,您的调度组将被视为完成。 D完成。