我正在使用__sync_xxx函数to implement lock-free queue。
但是,我注意到它们是遗留的,并且有__atomic functions,它们是在GCC 4.8中引入的。
我读了the page,注意到了区别:__atomic需要“内存模型”。
__ ATOMIC_RELAXED没有障碍或同步。
__ ATOMIC_CONSUME仅对屏障和与另一个线程同步的数据依赖性。
__ ATOMIC_ACQUIRE阻止代码升级并与另一个线程的释放(或更强)语义存储同步。
__ ATOMIC_RELEASE阻止代码下沉并与另一个线程的获取(或更强)语义负载同步。
__ ATOMIC_ACQ_REL双向完全屏障并与另一个线程中的获取加载和释放存储同步。
__ ATOMIC_SEQ_CST双向完全屏障并与所有线程中的获取加载和释放存储同步。
但我无法理解是什么..你能解释一下,用实际例子吗?