最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++內(nèi)存序memory_order的具體操作

 更新時間:2025年07月11日 10:12:19   作者:Damon_X  
C++原子操作提供6種內(nèi)存序,用于控制多線程內(nèi)存重排序,確保并發(fā)正確性,下面就來具體介紹一下,感興趣的可以了解一下

C++ 原子操作提供 6種內(nèi)存序(memory_order),分別控制編譯器和 CPU 如何對內(nèi)存操作進行重排序優(yōu)化,確保并發(fā)程序在多線程之間的行為可控、正確。

所有內(nèi)存序(memory_order)

C++ 中 std::memory_order 的 6 種選項如下:

枚舉值中文名簡要說明
memory_order_relaxed放松序不保證任何順序,只保證原子性
memory_order_consume消費序(已廢棄趨勢)數(shù)據(jù)依賴同步,僅限依賴關(guān)系(不推薦使用)
memory_order_acquire獲取序保證本線程之后的操作不會被重排到原子操作前
memory_order_release釋放序保證本線程之前的操作不會被重排到原子操作后
memory_order_acq_rel獲取 + 釋放序同時保證 acquire + release 的效果,適用于 read-modify-write 操作
memory_order_seq_cst順序一致性(默認)最強的保證:所有線程中看起來像是全局有序執(zhí)行

簡明圖解理解(線程內(nèi)操作順序)

  • relaxed: 無序(性能最好,但易出錯)
  • acquire: 不能把后面的操作移到前面
  • release: 不能把前面的操作移到后面
  • acq_rel: 二者兼具
  • seq_cst: 所有線程觀察到的執(zhí)行順序一致

常見用法示例對比

默認順序一致性memory_order_seq_cst

#include <atomic>

std::atomic<int> x{0};  // 初始化為 0
x.store(10);                  // store (默認 seq_cst)
int v = x.load();             // load (默認 seq_cst)

順序一致性:多線程中所有原子操作全局有序,易于理解但開銷較大。 

放松序 memory_order_relaxed

#include <atomic>

std::atomic<int> x{0};  // 初始化為 0
// 線程 A
x.store(10, std::memory_order_relaxed);  // 原子寫,不保證順序

// 線程 B
int value = x.load(std::memory_order_relaxed);  // 原子讀,不保證看到更新

獲取 / 釋放語義:典型鎖實現(xiàn)方式

#include <atomic>

std::atomic<bool> flag{false};  // 默認未設(shè)置

// 線程 A:寫線程
data = 123;  // 假設(shè) data 是共享變量
flag.store(true, std::memory_order_release);  // 發(fā)布 data 已準備好

// 線程 B:讀線程
if (flag.load(std::memory_order_acquire)) {
    // 這里看到 flag == true
    // 根據(jù) acquire 語義:保證看到的 data = 123
    std::cout << data << std::endl;
}

這就是經(jīng)典的 “寫線程 release,讀線程 acquire” 搭配,確保讀線程看到完整寫入的數(shù)據(jù)。

atomic_flag使用場景建議的 memory_order

操作類型推薦的 memory_order
flag.test_and_setstd::memory_order_acquire
flag.clearstd::memory_order_release

小結(jié)

序名用途是否有序性能說明
relaxed最快的,不同步???????僅原子性,無順序
acquire用于加鎖?(后有序)????加鎖讀
release用于解鎖?(前有序)????解鎖寫
acq_rel讀寫同時???用于 fetch_add 等
seq_cst最強順序保證?????默認值,全局有序
consume基本棄用??不推薦

到此這篇關(guān)于C++內(nèi)存序memory_order的具體操作的文章就介紹到這了,更多相關(guān)C++ memory_order內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • C語言實現(xiàn)鏈表與文件存取的示例代碼

    C語言實現(xiàn)鏈表與文件存取的示例代碼

    這篇文章主要和大家分享C語言實現(xiàn)鏈表與文件存取的示例代碼,可以實現(xiàn)建立鏈表,然后把鏈表數(shù)據(jù)存儲到文件中,然后把文件數(shù)據(jù)存儲到數(shù)組中并輸出,感興趣的可以學(xué)習(xí)一下
    2022-04-04
  • C語言示例講解結(jié)構(gòu)體的聲明與初始化方法

    C語言示例講解結(jié)構(gòu)體的聲明與初始化方法

    結(jié)構(gòu)體是一些值的集合,這些值稱為成員變量,結(jié)構(gòu)體的每個成員可以是不同類型的變量。本文將通過示例為大家詳細講講C語言中結(jié)構(gòu)體的使用,需要的可以參考一下
    2022-07-07
  • C++中類的成員函數(shù)及內(nèi)聯(lián)函數(shù)使用及說明

    C++中類的成員函數(shù)及內(nèi)聯(lián)函數(shù)使用及說明

    這篇文章主要介紹了C++中類的成員函數(shù)及內(nèi)聯(lián)函數(shù)使用及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • C++中指針的詳解及其作用介紹

    C++中指針的詳解及其作用介紹

    這篇文章主要介紹了C++中指針的詳解及其作用介紹,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • 用C實現(xiàn)PHP擴展 Fetch_Url 類數(shù)據(jù)抓取的方法

    用C實現(xiàn)PHP擴展 Fetch_Url 類數(shù)據(jù)抓取的方法

    該擴展是基于libcurl基礎(chǔ)實現(xiàn)的網(wǎng)頁數(shù)據(jù)抓取
    2013-04-04
  • C++中的類擴展之繼承和組合詳解

    C++中的類擴展之繼承和組合詳解

    在C++中,類擴展可以通過繼承、組合和裝飾模式實現(xiàn)。繼承可以實現(xiàn)對已有類的修改和擴展,組合可以增加新的功能,裝飾模式則能夠在不改變原類的情況下為其添加新的功能。這些技術(shù)在C++程序設(shè)計中應(yīng)用廣泛,提高了程序的可擴展性和可維護性
    2023-04-04
  • QString和char以及string之間的賦值詳解

    QString和char以及string之間的賦值詳解

    QString 、string 、char* 之間免不了相互賦值。下面是自己的總結(jié)。需要的朋友可以過來參考下
    2013-10-10
  • Visual Studio 2019 DLL動態(tài)庫連接實例(圖文教程)

    Visual Studio 2019 DLL動態(tài)庫連接實例(圖文教程)

    這篇文章主要介紹了Visual Studio 2019 DLL動態(tài)庫連接實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • C語言算術(shù)運算符整理

    C語言算術(shù)運算符整理

    算術(shù)運算符用于各類數(shù)值運算,包括加(+)、減(-)、乘(*)、除(/)、求余(或稱模運算,%)、自增(++)、自減(--)共七種
    2023-03-03
  • C++中string的模擬實現(xiàn)

    C++中string的模擬實現(xiàn)

    這篇文章主要為大家詳細介紹了C++中string的模擬實現(xiàn),感興趣的小伙伴們可以參考一下
    2016-08-08

最新評論

论坛| 本溪| 永善县| 都江堰市| 宜宾市| 达拉特旗| 利川市| 屯昌县| 新营市| 黄浦区| 朝阳县| 鄂尔多斯市| 香格里拉县| 枣庄市| 泗洪县| 平山县| 墨玉县| 成武县| 鄂伦春自治旗| 垦利县| 屏东县| 沂南县| 财经| 隆子县| 桓台县| 双牌县| 建昌县| 濮阳市| 牟定县| 玛沁县| 岳西县| 阿勒泰市| 毕节市| 许昌市| 德昌县| 土默特右旗| 玛曲县| 漳浦县| 景谷| 当涂县| 大余县|