我的问题是如何在功能 dispatch_group_notify 之后返回0 ?
如果我运行下面的代码,它将立即返回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;
这是愚蠢的!任何人都可以帮助我,谢谢
答案 0 :(得分:1)
您应该在收到通知时使用阻止/关闭进行回忆。它看起来应该是这样的。
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()
});
}