C++原子操作(atomic)使用


小白記錄貼

std::atomic<bool> a(true);    //定義一個類型為atomic_bool的原子變量並賦初值為true
原子操作:
賦值:
a = true;
a.store(true);

讀取:
int b = a;
int b = a.load();

原子操作還可以包含一個參數:內存順序(memory_order),是C++11為原子類型定義的內存模型,讓程序員根據實際情況靈活地控制原子類型的執行順序。通常情況下,使用該參數將有利於編譯器進一步提高並行性能。

memory_order
枚舉值 定義規則
memory_order_relaxed 不對執行順序做任何保障
memory_order_acquire 本線程中,所有后續的讀操作均在本條原子操作完成后執行
memory_order_release 本線程中,所有之前的寫操作完成后才能執行本條原子操作
memory_order_acq_rel 同時包含memory_order_acquire和memory_order_release標記
memory_order_consume 本線程中,所有后續的有關本原子類型的操作,必須在本條原子操作完成后執行
memory_order_seq_cst 全部存取都按順序執行

 

 

 

 

 

 

 

 

 

 

 

接口同樣為store或load, 例:
a.store(true, memory_order_relaxed);
a.load(memory_order_relaxed);


免責聲明!

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



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