A) グローバル変数 B) ローカル変数があるが、別のスレッドに ptr があるとしましょう
このコードがあるとしましょう
thread2(&localVar);//now thread2 can modify it
localVar=0;
globalVar=0;
while(1){
mutex.lock();
cout << (globalVar && localVar ? "Both true" : "fail");
mutex.unlock();
Sleep(1000)
}
これは正しく安全ですか?思い出せない。それが私の質問であれば、localVar と globalVar が変更された可能性があることを C++ がどのように認識するのでしょうか? ミューテックスのロック/ロック解除が原因だと言う場合、私の質問はなぜですか? 関数を呼び出すとき、C++ は変数が変更された可能性があり、レジスタに再ロードする必要があると考えていますか?
これが安全でない場合、安全でない理由は何ですか? (そうでない場合は、localVar だけが安全ではないと思われます)、どうすれば修正できますか?