我們有一個表示原子整數的包裝。在內部,它使用的是Windows' InterlockedIncrement()
和InterlockedDecrement()
功能,這在volatile long
變量來實現:易失性成員的訪問方法
class AtomicInt {
public:
...
operator long() const { return m_value; }
private:
volatile long m_value;
};
我的問題是,是查詢正確的電流值,上述運營商(即您始終獲得的電流值)或者我是否需要聲明該方法爲volatile
以防止緩存值出現任何問題?
我認爲volatile在這裏帶有微軟的額外含義 – 2012-02-21 18:49:45
是的,MSVC對'volatile'的解釋是我認爲增加了對'volatile'的實際含義和目的的混淆...... BTW,雖然它們增加了內存障礙安騰與'volatile',他們也會做同樣的WOA(Windows上的ARM)? – Jason 2012-02-21 19:41:21
嗯,我不確定,但如果他們在某些平臺上使'volatile'變弱,我會感到驚訝。 – 2012-02-21 19:51:34