c++原子操作
1. __sync_bool_compare_and_swap系列是gcc最早內置的;
2. __atomic_compare_exchange_n系列是新版gcc內置的,支持6種memory order;
3. std::atomic之類的是stl的封裝;
4. 6種mem order,https://www.zhihu.com/question/24301047里講得不錯,概括下:
memory_order_seq_cst最嚴,memory_order_relaxed最松,通常是用acquire(load時)/release(store時)模式,在該大模式下:
a. 通常是讀用memory_order_acquire,寫用memory_order_release;
b. 如果只是針對單個變量且該變量沒有依賴的變量,acquire可以弱化為consume;
c. 如果不想區(qū)分什么單變量多變量或讀寫狀態(tài),簡單點統一用memory_order_acq_rel。
posted on 2020-06-28 17:19 so true 閱讀(222) 評論(0) 編輯 收藏 所屬分類: C&C++