如何在Qt4中,在所有支持的體系結構中以原子方式讀取QAtomicInt或QAtomicPointer的值?我不關心這裏的內存排序,我只是想確定,如果另一個線程正在同時更改值,我將不會讀取部分舊的,部分新值。原子閱讀與QAtomicInt/QAtomicPointer
在Qt4中,這些類只有int或T *的轉換運算符。似乎有更新的代碼(http://qt.gitorious.org/qt/qtbase/blobs/master/src/corelib/thread/qbasicatomic.h)區分了非原子加載()和原子加載獲取()。 C++ 11原子也有一個原子加載()(http://en.cppreference.com/w/cpp/atomic/atomic/load)。這就是爲什麼我擔心Qt4提供的方法不夠安全。
我知道fetchAndAddRelaxed(0)應該可以工作,但它看起來像是一種黑客攻擊,並且在性能方面可能不是最佳的。