我有一堂课,我正在产生几个线程来做一些工作。现在我希望能够在发生事件时停止工作。事件处理程序在生成的类say(Interrupted) 中设置一个字段。在我的 For-Each 代表中,我在继续下一次迭代之前检查了这个标志。
public bool Interrupted { get; set; }
Parallel.ForEach(some collection){
if (Interrupted)
{
parallelLoopState.Break();
return;
}
else
DoSomething();
}
现在一旦在父线程上将 Interrupted 设置为 true。Parallel.Foreach 生成的线程会立即看到它吗?还是需要一些时间才能看到?
我的测试间歇性地失败,表明即使在父线程设置标志之后,子线程也执行了几次?我错过了一些基本的东西吗?
这是 Volatile 的用例场景吗?