コンテキストスイッチは命令の実行中の任意の時点で発生する可能性があるように見えるので、コンテキストスイッチが任意の命令間で発生する可能性があり、異なるCPU上にある可能性がある場合、「部分的に問題のある」コード(これらの2つの命令)がなぜ意味があるのか 疑問に思っています2 番目の命令のコア。
void B()
{
Thread.MemoryBarrier(); // Barrier 3
if (_complete)
{
//PART IN QUESTION
Thread.MemoryBarrier(); // Barrier 4
Console.WriteLine (_answer);
//END PART IN QUESTION
}
}
ここでの MemoryBarrier の説明は、MemoryBarrier を呼び出した後に CPU が切り替えられないという保証を与えるようには見えません。
(これはこの質問に関連しています)