gcc-9.1.0\libsanitizer\sanitizer_common\sanitizer_atomic.h
enum memory_order {
memory_order_relaxed = 1 << 0,
memory_order_consume = 1 << 1,
memory_order_acquire = 1 << 2,
memory_order_release = 1 << 3,
memory_order_acq_rel = 1 << 4,
memory_order_seq_cst = 1 << 5
};
- 定义了多个不同位数的原子性结构体,如atomic_uint32_t表示原子性无符号32位整形。
- 定义了原子性的指针,指针大小由系统的位数决定。
- 使用预编译选择性包含了头文件
#if defined(__clang__) || defined(__GNUC__)
# include "sanitizer_atomic_clang.h"
#elif defined(_MSC_VER)
# include "sanitizer_atomic_msvc.h"
#else
# error "Unsupported compiler"
#endif
- 定义了两个模板函数atomic_load_relaxed和atomic_store_relaxed,具体实现与前面预编译包含的头文件有关