作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 GCC atomic 内置中,我发现 __atomic_exchange 函数确实有第三个参数 int memorder,它可以采用值之一 __ATOMIC_RELAXED
, __ATOMIC_SEQ_CST
, __ATOMIC_ACQUIRE
, __ATOMIC_RELEASE
, 和 __ATOMIC_ACQ_REL
.
__ATOMIC_RELAXED: Implies no inter-thread ordering constraints.
最佳答案
所有这些内置函数都对应于新的 C11 标准原子性特性。标准包含对 memory_order_relaxed 排序模型的完美解释和一些示例(引用 7.17.3/14)
// Thread 1:
r1 = atomic_load_explicit(&y, memory_order_relaxed);
atomic_store_explicit(&x, r1, memory_order_relaxed);
// Thread 2:
r2 = atomic_load_explicit(&x, memory_order_relaxed);
atomic_store_explicit(&y, 42, memory_order_relaxed);
r1 == 42 && r2 == 42.
因为线程 2 中的 y 存储可能会在加载 r2 之前重新排序。
关于multithreading - __ATOMIC_RELAXED 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32377201/
在 GCC atomic 内置中,我发现 __atomic_exchange 函数确实有第三个参数 int memorder,它可以采用值之一 __ATOMIC_RELAXED , __ATOMIC_
我是一名优秀的程序员,十分优秀!