std::atomic_flag

std::atomic_flag是C++中用于并发的原子标志,支持test-and-set和clear操作。它是lock-free的,确保了原子性。构造时不指定状态,需要显示初始化为ATOMIC_FLAG_INIT。test_and_set函数根据标志状态返回true或false,并进行原子操作。clear函数用于清除标志,使test_and_set再次返回false。
摘要由CSDN通过智能技术生成

摘要

原型: struct atomic_flag;

Atomic flags是boolean atomic 对象, 支持两种操作, test-and-set 和 clear.

Atomic flags是 lock-free(原子操作), 是唯一被保证的lock-free 原子操作的.

Constructor

atomic_flag() noexcept = default;

atomic_flag (const atomic_flag& T) = delete;  //  atomic_flag不能被 copied/moved

atomic_flag的状态 没有在 构造函数中指定, 除非 显示地被 初始化为 ATOMIC_FLAG_INIT.

test_and_set

函数原型为:

bool test_and_set (memory_order sync = memory_order_seq_cst) volatile noexcept;

bool test_and_set (memory_order sync = memory_order_seq_cst) noexcept;

1. 如果atomic flags设置过, 则 test_and_set()返回true

2. 否则, 返回false

test_and_set() 函数是 atomic原子操作, read-modify-write原子操作.

memory order是对atomic操作的一直约束.

 

#include <memory>
#include <iostream>
#include <mutex>          // std::mutex
#include <atomic>         // std::atomic, std::at
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值