C または C++ プログラムで、2 つのスレッドが同じグローバル変数を使用する場合、ミューテックスを介して変数をロックする必要があります。
しかし、具体的にどのような場合に?
- スレッド 1: 読み取り スレッド 2: 読み取り
- スレッド 1: 書き込み スレッド 2: 読み取り
- スレッド 1: 書き込み スレッド 2: 書き込み
もちろん、ケース 3 でロックする必要がありますが、他の 2 つのケースは何ですか? ケース 2 (非アトミック操作の場合) ではどうなりますか? ある種のアクセス違反がありますか、それともスレッド 2 が古い値を取得するだけですか? ハードウェアレベルのメモリとレジスタに同時にアクセスできないため(通常のPCハードウェアでは)、または並列RAMチップへの並列バスラインを備えたある種の並列CPUがあるため、これについて少し混乱していますか?