Linux 的 C 语言环境中实现与 C++ 中 `release` 和 `acquire` 等效的内存顺序控制

首先,C11标准引入了原子操作和内存模型,

一、用户空间 C 程序(C11 标准)
如果使用支持 C11 标准 的编译器(如 GCC 或 Clang),可以通过 头文件直接使用类似 C++ 的原子操作和内存顺序参数。

  1. 对应 releaseacquire 的语法
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
}
  1. 关键点
    <

你可能感兴趣的:(高质量嵌入式Linux应用开发,linux,单片机,arm开发,stm32,c语言)