私は常に、複数のスレッドがアクセスする変数の周りにロックをかけるように言われてきました。これは、書き戻す前に、作業している値が変更されないことを確認したいからだといつも思っていました。
mutex.lock()
int a = sharedVar
a = someComplexOperation(a)
sharedVar = a
mutex.unlock()
そして、それはあなたがそれをロックすることは理にかなっています。しかし、他のケースでは、ミューテックスを使用しないことで逃げられない理由がわかりません。
スレッドA:
sharedVar = someFunction()
スレッドB:
localVar = sharedVar
この場合、何がうまくいかない可能性がありますか?特に、スレッドBがスレッドAによって割り当てられた特定の値を読み取ることを気にしない場合。