atomic | #include 原子操作(atomic): 互斥量的加鎖一般是針對一個代碼段,而原子操作針對的一般都是一個變量。原子變量既不可復(fù)制亦不可移動。(1)它表示在多個線程訪問同一個全局資源的時候,能夠確保所有其他的線程都不在同一時間內(nèi)訪問相同的資源。也就是他確保了在同一時刻只有唯一的線程對這個資源進行訪問。這有點類似互斥對象對共享資源的訪問的保護,但是原子操作更加接近底層,因而效率更高。是線程安全的。 (2)原子數(shù)據(jù)類型不會發(fā)生數(shù)據(jù)競爭,能直接用在多線程中而不必我們用戶對其進行添加互斥資源鎖的類型。從實現(xiàn)上,大家可以理解為這些原子類型內(nèi)部自己加了鎖。 (3)C++11中所有的原子類都是不允許拷貝、不允許Move的,atomic_flag也不例外。 (4)C++11 對常見的原子操作進行了抽象,定義出統(tǒng)一的接口,并根據(jù)編譯選項/環(huán)境產(chǎn)生平臺相關(guān)的實現(xiàn)。新標(biāo)準(zhǔn)將原子操作定義為atomic模板類的成員函數(shù),囊括了絕大多數(shù)典型的操作——讀、寫、比較、交換等
(4)macro
(5)memory_order:內(nèi)存順序
(6)Functions (7)std::atomic的限制:trivially copyable(可平凡復(fù)制):一個類型如果是trivially copyable,則使用memcpy這種方式把它的數(shù)據(jù)從一個地方拷貝出來會得到相同的結(jié)果。 1.沒有non-trivial 的拷貝構(gòu)造函數(shù) 2.沒有non-trivial的move構(gòu)造函數(shù) 3.沒有non-trivial的賦值操作符 4.沒有non-trivial的move賦值操作符 5.有一個trivial的析構(gòu)函數(shù) |
|
C++關(guān)鍵字整理
? 社會
鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場,版權(quán)歸原作者所有,如有侵權(quán)請聯(lián)系管理員(admin#wlmqw.com)刪除。
java中條件等待
上一篇 2022年6月30日 20:05
LeetCode環(huán)形鏈表
下一篇 2022年6月30日 20:05