C++ 面试题
目录

C++20 中 std::atomic_ref 的用法?

· 约 3 分钟读完 · 第 152 / 181 章

推荐答案

本题详细解读

std::atomic_ref 概述

std::atomic_ref 是 C++20 引入的一个新特性,它允许对非原子类型的对象进行原子操作。与 std::atomic 不同,std::atomic_ref 并不拥有它所引用的对象,而是对已有的对象进行原子操作。

主要用法

  1. 创建 std::atomic_ref 对象:

    这里 atomicValue 是对 value 的原子引用。

  2. 原子操作:

    • fetch_add:原子地增加一个值。
    • load:原子地读取当前值。
    • compare_exchange_strong:原子地比较并交换值。

注意事项

  • std::atomic_ref 引用的对象必须在其生命周期内保持有效。
  • std::atomic_ref 不支持对数组或指针的原子操作。
  • 使用 std::atomic_ref 时,必须确保没有其他线程同时以非原子的方式访问该对象。

适用场景

std::atomic_ref 适用于需要对已有非原子对象进行原子操作的场景,特别是在无法修改对象类型或无法使用 std::atomic 的情况下。