从关于SO的另一个问题中,我发现以下简单方法可能
void B()
{
if (_complete)
{
Console.WriteLine (_answer);
}
}
如果在if和控制台writeline调用之间进行上下文切换,则可能在不同的CPU上执行。这对我来说是个新闻,所以我现在想知道何时可以为另一个CPU切换单线程代码,以及为什么在上述这种简单情况下有意义? ?
最佳答案
基本上,上下文切换是操作系统“冻结”它所在的线程,以便另一个线程可以获得一些CPU时间。当第一个线程“解冻”时,不要求它在先前运行的CPU上继续运行。具体细节由操作系统决定。
例如,如果在解冻线程时有一个未使用的完整内核,而该内核恰好与运行该线程的先前内核不同,那么不使用空闲内核会很浪费。
关于c# - 在不同的CPU内核上执行上下文切换和线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7260402/