我的问题是如何返回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()
});
}