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