想象一下,您正在多核系统中使用并行。
相同的指令不能同时执行吗?
采取以下代码:
int i = 0;
if( blockingCondition )
{
lock( objLock )
{
i++;
}
}
在我的脑海中,似乎很有可能在具有多核和并行性的系统上,blockingCondition 可以在同一时刻被检查,导致同时尝试锁定,等等......这是真的?
如果是这样,您如何确保跨处理器的同步?
此外,.net TPL 是否处理这种类型的同步?其他语言呢?
编辑 请注意,这不是关于线程,而是关于任务和并行处理。
编辑 2 好的,谢谢大家的信息。那么操作系统是否会确保对内存的写入是序列化的,通过易失性读取确保多核同步?