15.1.5 原子类型atomic_flag
2025年09月26日
15.1.5 原子类型
atomic_
flag
atomic_flag是原子运行库最基本的类型之一。atomic_flag是一种简单的原子布尔类型。该类型仅支持两种类型的操作:test_and_set和clear。atomic_flag的构造函数不允许被复制,因此不能使用一个atomic_flag对象构造另一个对象。
宏ATOMIC_FLAG_INIT:如果某个std::atomic_flag对象使用该宏初始化,那么可以保证该std::atomic_flag对象在创建时处于clear状态。
atomic_test_and_set()函数用于检查std::atomic_flag标识,若std::atomic_flag之前没有被设置过,则设置std::atomic_flag的标识,并返回先前该std::atomic_flag对象是否被设置过。若之前std::atomic_flag对象已被设置,则返回true;否则,返回false。
atomic_test_and_set()的操作具有原子性,并且也可以指定“内存序”参数。
上述函数用于清除std::atomic_flag对象的标识位,即设置atomic_flag的值为false。清除std::atomic_flag标识使得下一次调用std::atomic_flag::test_and_set,可返回false。该函数也可以指定内存序参数。
例15-2
例15-2的执行效果如图15-2所示。
图15-2 例15-2的执行效果