首先,C11标准引入了原子操作和内存模型,
一、用户空间 C 程序(C11 标准)
如果使用支持 C11 标准 的编译器(如 GCC 或 Clang),可以通过
头文件直接使用类似 C++ 的原子操作和内存顺序参数。
release
和 acquire
的语法c
include
atomic_bool ready = ATOMIC_VAR_INIT(false); // 原子变量
struct Data c; // 共享结构体
// 线程 A:写入数据后发布 release
void threadA() {
c.x = 42;
atomic_store_explicit(&ready, true, memory_order_release);
}
// 线程 B:通过 acquire 等待并读取数据
void threadB() {
while (!atomic_load_explicit(&ready, memory_order_acquire));
int value = c.x; // 保证读到 c.x = 42
}