由于您仅将顺序循环用于调试,因此您可以转换为也使用 lambda 的版本:
parallel_for (first, last, [&](size_t i)
{
if(condition)
return;
do_stuff(i);
});
转变为
for (size_t i = first; i < last; i++)[&]
{
if(condition)
return;
do_stuff(i);
}();
这很丑,当然。但如果它只是为了调试而存在,它就不会保持这种状态。
或者,您可以将所有 lambda 函数包装在一个执行单次迭代的循环中,并始终使用continue
而不是return
. 缺点是你丑化了非调试代码。
parallel_for (first, last, [&](size_t i)
{
do {
if(condition)
continue; // same as return
do_stuff(i);
} while(0);
});
以顺序形式工作相同:
for (size_t i = first; i < last; i++)
{
do {
if(condition)
continue; // same as continue without the do/while
do_stuff(i);
} while(0);
}