我正在将一些代码转换为
Parallel.ForEach
,但在代码中使用了continue
时出现了错误。在Parallel.ForEach
中是否有类似的功能可以替代foreach
循环中的continue
?Parallel.ForEach(items, parallelOptions, item =>
{
if (!isTrue)
continue;
});
isTrue
变量的意图是在循环运行时终止循环,正确的做法是创建一个CancellationTokenSource
实例,并将其Token
属性传递给ParallelOptions.CancellationToken
属性。请参阅此处以获取示例。CancellationTokenSource
类是线程安全的,并且处理了可见性问题,如果您对volatile
字段和内存屏障不熟悉,可能会让您措手不及。 - Theodor Zoulias