原子操作CAS 預備知識

2021-09-24 22:25:07 字數 558 閱讀 7489

不可被中斷的乙個或一系列操作。

比較與交換。cas操作包含三個引數:記憶體位置、預期原值和新值。如果記憶體位置的值與預期原值相匹配,那麼就會給該記憶體位置賦上新值,否則,不做任何操作。

aba問題指的是:例如有乙個執行緒a,從記憶體位置v中取出1,之後執行緒b,將該記憶體位置的值變為2,執行緒c又將該記憶體位置的值變為1,那麼從執行緒a的角度來看,該記憶體位置的值與預期原值相符,所以成功操作,雖然操作都成功,甚至結果都一樣,但是並不表示整個過程沒有問題。

如果記憶體原值與記憶體位置的值不匹配,那麼執行緒會一直自旋進行cas操作。

略詳細說明見

atomicboolean,atomicinteger,atomiclong

atomicintegerarray,atomiclongarray,atomicreferencearray

atomicreference,atomicmarkablereference,atomicstampedreference

atomicreferencefieldupdater,atomicintegerfieldupdater,atomiclongfieldupdater

原子操作 CAS

原子操作 cas 利用現代處理器都支援cas指令,迴圈執行cas指令,直至成功。指令級別的保證原子操作。記憶體位址 v 期望值 a 新值 b 當位址v上的值等於a時,就把b賦值給v,若不等於,就不做任何操作,或一直迴圈。1 aba問題 記憶體位址上的值變化 a b a 可以加版本號解決。則值的變化就...

原子操作CAS

原子操作cas cas是一種樂觀鎖思想的應用 cas的原理 cas compare and swap 指令級別保證這是乙個原子操作 三個運算子 乙個記憶體位址v,乙個期望的值a,乙個新值b 基本思路 如果位址v上的值和期望的值a相等,就給位址v賦給新值b,如果不是,不做任何操作。cas問題 1 ab...

CAS原子操作

原子操作 什麼是原子操作,打個比方,假如有兩個操作a和b,當執行a的執行緒去看另乙個執行b的執行緒的時候,要麼b執行緒還沒執行,要麼b執行緒執行完了。那麼a跟b之間就是原子的。如何實現原子操作 實現原子操作的方式,當然有加鎖,比如synchronized加鎖機制可以很好的保證原子操作,但是過於笨重。...