1
//A count protected internally by a Mutex
class AtomicCount
{
public:
AtomicCount();
~AtomicCount();
int value() const;
void increment();
private:
HANDLE hMutex;
int count;
};
AtomicCount myCount;
void loop_until_set() {
while(!myCount.value())
Sleep(1000);
}
假設我們在一個線程中調用loop_until_set(),我們正在等待另一個線程執行myCount.increment()。有沒有危險,myCount.value()被優化,以至於當另一個線程調用myCount.increment()時,它永遠不會讀取更新的值?優化VS2010中的方法調用C++(多線程)
沒有同步你有一個競爭條件。 – Thomas
需要查看'value()'的代碼來回答這個問題。 – SergeyA