C++使用原子變量


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;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM