マルチコア システムで並列処理を利用しているとします。
同じ命令が同時に実行される可能性は完全にありませんか?
次のコードを使用します。
int i = 0;
if( blockingCondition )
{
lock( objLock )
{
i++;
}
}
私の頭の中では、複数のコアと並列処理を備えたシステムでは、blockingCondition が正確に同時にチェックされ、同時にロックが試行されるなどの可能性が非常に高いようです...真実?
もしそうなら、どうすればプロセッサ間の同期を保証できますか?
また、.net TPL はこのタイプの同期を処理しますか? 他の言語はどうですか?
編集これはスレッドに関するものではなく、タスクと並列処理に関する ものであることに注意してください。
EDIT 2 OK、情報をありがとう。では、OS がメモリへの書き込みがシリアル化され、揮発性読み取りによるマルチコア同期が保証されるというのは本当ですか?