我一直被告知要对多个线程将访问的变量加锁,我一直认为这是因为你想确保你正在使用的值在写回之前不会改变,即
mutex.lock()
int a = sharedVar
a = someComplexOperation(a)
sharedVar = a
mutex.unlock()
这是有道理的,你会锁定它。但在其他情况下,我不明白为什么我不能不使用互斥锁。
线程 A:
sharedVar = someFunction()
线程 B:
localVar = sharedVar
在这种情况下可能会出现什么问题?特别是如果我不在乎线程 B 读取线程 A 分配的任何特定值。