ミューテックスを使用するとき、私はこれについて考えていました。
たとえば、スレッドをミューテックスでロックする場合
m.lock();
a += b;
m.unlock();
2 つのスレッドが衝突するとどうなりますか? それは次のようですか:
1) スレッド A をロックすることにより、ロックが解除されるまで中断せずに実行する必要があり、a += b ステートメントが発生している間はコンテキスト スイッチが発生しないことを CPU に伝えます。
2) スレッド A がロックし、a += b ステートメントのコンテキスト切り替えが発生している間に、スレッド B はロックされていることを確認し、制御を放棄し、すべてが A に戻り、a += b が終了します。操作とアクセスのロックを解除しますか?
ケース 2 の場合、コードの特定の部分がコンテキスト スイッチによって中断されないことを CPU に伝える方法はありますか?