我正在开发一个依赖于GCC' atomic built-ins的项目。在将项目移植到Windows时,我试图找到GCC原子的Interlocked *对应物。大多数操作实际上都可用,但我错过了应用__ATOMIC_CONSUME
和__ATOMIC_ACQ_REL
内存语义的操作。由于_ * Barrier内在函数为deprecated,Microsoft advises使用std::atomic
(例如atomic_thread_fence
)和C ++ 11标准相同。
我想知道:C程序员应该做什么,我们如何在不使用C ++ 11的情况下实现atomics
和__ATOMIC_CONSUME
语义的可移植版本__ATOMIC_ACQ_REL
?