1、C++給我們typedef了很多原子變量
/// atomic_bool typedef atomic<bool> atomic_bool; /// atomic_char typedef atomic<char> atomic_char; /// atomic_schar typedef atomic<signed char> atomic_schar; /// atomic_uchar typedef atomic<unsigned char> atomic_uchar; /// atomic_short typedef atomic<short> atomic_short; /// atomic_ushort typedef atomic<unsigned short> atomic_ushort
....
可以直接拿來用
2、查看atomic的類聲明源碼
2.1、構造函數
atomic() noexcept = default; ~atomic() noexcept = default; atomic(const atomic&) = delete; atomic& operator=(const atomic&) = delete; atomic& operator=(const atomic&) volatile = delete;
可以看出拷貝構造函數、賦值構造函數都是delete的,而整個類是模板類【其實是結構體】,所以要聲明或者初始化應該這樣:
①、頭文件中
static std::atomic_bool a;
②、cpp中
std::atomic<bool> MainWindow::a(false);
這是通過類模板傳入參數的形式進行初始化
如果是全局變量:
③、
std::atomic_int g_iCount = 100;
