【发布时间】:2011-08-31 17:09:26
【问题描述】:
由于看起来上下文切换可能发生在指令执行的任何时候,我现在想知道为什么代码“部分有问题”(这两条指令)是有意义的,如果上下文切换可以在任何指令之间发生,我们可能会第二条指令在不同的 CPU 内核上。
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。
(这和这个question有关)
【问题讨论】:
标签: c# .net multithreading context-switch memory-barriers