c++11 atomic
时间: 2023-09-29 10:03:45 浏览: 174
C语言中的`<stdatomic.h>`库提供了原子操作接口,用于实现线程安全的原子操作。原子操作是不可被中断的,即在执行原子操作期间不会有其他线程干扰。
在C11标准中,`<stdatomic.h>`库引入了一组原子类型和原子操作函数。这些原子类型和函数可以用于实现共享变量的原子访问、更新和同步。
下面是一些常用的原子类型和相关函数:
1. `atomic_flag`类型:用于简单的原子标志操作,只有两个操作:`atomic_flag_test_and_set()`和`atomic_flag_clear()`。
2. 原子整型类型(如`atomic_int`、`atomic_uint`等):支持常见的整型操作,如赋值、加法、减法、比较交换等。
3. 原子指针类型(如`atomic_intptr_t`、`atomic_ptrdiff_t`等):支持指针类型的原子操作,如原子加载、存储和比较交换等。
4. `atomic_thread_fence()`函数:用于实现内存屏障,确保指令重排序不会破坏多线程程序的正确性。
5. `atomic_load()`和`atomic_store()`函数:用于原子加载和存储操作。
6. `atomic_exchange()`函数:用于原子交换操作,可以原子地交换一个值并返回旧值。
7. `atomic_compare_exchange_strong()`和`atomic_compare_exchange_weak()`函数:用于原子比较并交换操作,可以原子地比较并交换一个值。
通过使用这些原子类型和函数,我们可以实现线程安全的并发操作。注意,原子操作并不意味着完全的线程同步,额外的同步机制(如互斥锁)可能仍然是必需的来确保正确的并发访问。
阅读全文