如何在dispatch_group_notify GCD之后执行代码



我的问题是如何返回0 之后 dispatch_group_notify in Function?

如果我在下面运行代码,它将立即返回0,但不要等待每个GCD工作都完成,包括dispatch_group_notify。

int func() {
  dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_group_t group = dispatch_group_create();
    dispatch_group_async(group, queue,^{
    });
    dispatch_group_async(group, queue,^{
    });
    dispatch_group_notify(group, queue, ^{
    });
    return 0;
}

现在我在一段时间内使用标志来等待dispatch_group_notify完成。

 dispatch_group_notify(group, queue, ^{
       flag = true;
 });
while(!flag) ;
return 0;

这很愚蠢!任何人都可以帮助我,谢谢

当您收到通知时,应该使用块/闭合来回忆。它应该看起来像这样。

int func(block_type your_block) {
  dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_group_t group = dispatch_group_create();
    dispatch_group_async(group, queue,^{
    });
    dispatch_group_async(group, queue,^{
    });
    dispatch_group_notify(group, queue, ^{
       your_block()
    });
}

相关内容

最新更新