【发布时间】:2015-11-01 04:10:07
【问题描述】:
如果我们使用 GCD 方法进行迭代,一旦条件匹配,如何中断/停止循环?
queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);
dispatch_apply(count, queue, ^(size_t i) {
printf("%u\n", i);
//doing thread safe(also heavy) operation here
if (condition) {
//exit the loop
}
});
【问题讨论】:
-
dispatch_apply不支持任何提前停止的功能。在所有count调用完成之前,它不会返回。用您正在尝试做的事情更新您的问题,以便提供替代解决方案。 -
感谢@rmaddy 的评论。我想在循环内执行线程安全操作,一旦满足我的条件,我想退出循环。我已经更新了我的问题。
-
为什么你认为
dispatch_apply会让你的操作线程安全?您想提前终止这一事实意味着任何形式的并行执行都可能不适合。