CAS操作以及ABA问题
生活随笔
收集整理的這篇文章主要介紹了
CAS操作以及ABA问题
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
CAS 操作(Compare and Swap)無(wú)鎖算法
當(dāng)一個(gè)線程從內(nèi)存中獲取到一個(gè)數(shù)據(jù),該線程改變?cè)摂?shù)據(jù),當(dāng)要進(jìn)行內(nèi)存數(shù)據(jù)修改操作時(shí),先比較內(nèi)存中數(shù)據(jù)是否是剛剛該線程獲取到數(shù)據(jù)是是否一致,若如不一致,該內(nèi)存之前修改操作作廢,重新沖內(nèi)存中獲取數(shù)據(jù),繼續(xù)做修改操作。
底層實(shí)現(xiàn):lock cmpxchg 指令(lock原子操作)硬件級(jí)別指令
ABA問(wèn)題
其他線程修改內(nèi)存中的最后值與原值相同,但實(shí)際意義上該值已經(jīng)經(jīng)過(guò)了一個(gè)過(guò)程的改變,實(shí)際意義上值相同,但已經(jīng)不是原來(lái)的值,稱為ABA問(wèn)題,解決該問(wèn)題可以給值加上版本號(hào),對(duì)比版本號(hào),是否一致。通常使用布爾類型。
總結(jié)
以上是生活随笔為你收集整理的CAS操作以及ABA问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: brafteditor防抖_braft-
- 下一篇: 8--风格迁移