CAS 是比較與交換(Compare And Swap)的縮寫,它是一種并發(fā)編程中常用的同步原語(yǔ)。
CAS 基于原子操作,用于實(shí)現(xiàn)多線程環(huán)境下的非阻塞算法,用于解決并發(fā)沖突和數(shù)據(jù)競(jìng)爭(zhēng)問(wèn)題。CAS 操作包含三個(gè)操作數(shù):一個(gè)內(nèi)存位置(V)、舊的預(yù)期值(A)和一個(gè)新值(B)。CAS 操作的意義是,當(dāng)且僅當(dāng) V 的值等于 A 時(shí),將 V 的值設(shè)為 B。整個(gè)操作是原子的,可以保證在多線程環(huán)境下的一致性。CAS 操作可以分為兩步:讀取內(nèi)存中的值和進(jìn)行比較與交換。如果內(nèi)存中的值與預(yù)期值相等,則進(jìn)行交換操作,否則不做任何操作。通過(guò)不斷地重試 CAS 操作,可以實(shí)現(xiàn)非阻塞的并發(fā)算法。CAS 在并發(fā)編程中廣泛應(yīng)用于各種同步原語(yǔ)的實(shí)現(xiàn),比如鎖、信號(hào)量、計(jì)數(shù)器等。它避免了傳統(tǒng)的加鎖機(jī)制帶來(lái)的額外開(kāi)銷和競(jìng)爭(zhēng),提供了一種高效且線程安全的并發(fā)編程方式。