假设我有 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)
}
这是正确和安全的吗?我不记得了。如果是我的问题是 C++ 如何知道 localVar 和 globalVar 可能已被修改?如果你说它是因为互斥锁/解锁,那么我的问题是为什么?在调用任何函数时,C++ 是否认为变量可能已被修改并需要重新加载到寄存器中?
如果这不安全,那么是什么使它不安全?(我怀疑如果不是,那么只有 localVar 是不安全的),我该如何纠正它?