C++ 并发编程指南(11)原子操作 | 11.4、通过内存序实现顺序模型


前言

前文介绍了六种内存顺序,以及三种内存模型,本文通过代码示例讲解六种内存顺序使用方法,并实现相应的内存模型。

一、通过内存序实现顺序模型

1、Relaxed Ordering

memory_order_relaxed 表示“最宽松的内存序”,不提供任何同步保证。具体来说,memory_order_relaxed 仅保证原子操作本身是原子的,但不保证操作之间的顺序。

memory_order_relaxed 的语义下,编译器和处理器可能会对原子操作进行重排序,以提高性能。在多线程环境中,使用 memory_order_relaxed 的原子操作可能会产生不可预测的结果,因为线程之间的操作顺序可能会因为重排序而发生变化。例如:

std::atomic<bool> x, y;
std::atomic<int> z;

void write_x_then_y() {
   
   
    x.store(true, std::memory_order_relaxed);  // 1
    y.store(true, std::memory_order_relaxed);  // 2
}

void read_y_then_x() {
   
   
    while (!y.load(std::memory_order_relaxed)) {
   
    // 3
        std::cout << "y load false" << std::endl;
    }

    if (x.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值