樂觀鎖的實(shí)現(xiàn)方式有哪些-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務(wù)器提供商,新人活動買多久送多久,劃算不套路!

創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、迎江網(wǎng)絡(luò)推廣、小程序定制開發(fā)、迎江網(wǎng)絡(luò)營銷、迎江企業(yè)策劃、迎江品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們大的嘉獎;創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供迎江建站搭建服務(wù),24小時(shí)服務(wù)熱線:18982081108,官方網(wǎng)址:muchs.cn

樂觀鎖的實(shí)現(xiàn)方式有哪些?針對這個(gè)問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。

樂觀鎖( Optimistic Locking ) 相對 悲觀鎖而言,樂觀鎖機(jī)制采取了更加寬松的加鎖機(jī)制。 悲觀鎖大多數(shù)情況下依靠 數(shù)據(jù)庫的鎖機(jī)制實(shí)現(xiàn),以保證操作大程度的獨(dú)占性。但隨之而來的就是 數(shù)據(jù)庫性能的大量開銷,特別是對長 事務(wù)而言,這樣的開銷往往無法承受。而樂觀鎖機(jī)制在一定程度上解決了這個(gè)問題。樂觀鎖,大多是基于數(shù)據(jù)版本( Version )記錄機(jī)制實(shí)現(xiàn)。

1、版本號機(jī)制

一般是說在數(shù)據(jù)表中加上一個(gè)數(shù)據(jù)庫版本號version字段,在表述數(shù)據(jù)被修改的次數(shù)當(dāng)數(shù)據(jù)被修改時(shí),它的version 值會加1。

如:

當(dāng)然線程A需要更新數(shù)據(jù)值時(shí),在讀取數(shù)據(jù)的同時(shí)也會讀取 version 值,在提交更新時(shí),若剛才讀取到的 version 值為當(dāng)前數(shù)據(jù)庫中的 version 值相等時(shí)才更新,否則重試更新操作,直到更新成功。

2、CAS 算法

CAS(compare and swap) 比較并交換,有三個(gè)操作數(shù),內(nèi)存地址V ,預(yù)期值B,要替換得到的目標(biāo)子A。

CAS指令執(zhí)行時(shí),比較內(nèi)存地址V與預(yù)期值B是否相等,若相等則將A賦給B,(不相等則會循環(huán)比較直到相等)整個(gè)比較賦值操作是一個(gè)原子操作。

CAS缺點(diǎn):

(1)循環(huán)時(shí)間開銷大:當(dāng)內(nèi)存地址V與預(yù)期值B不相等時(shí)會一直循環(huán)比較直到相等;

(2)只能保證一個(gè)共享變量的原子操作;

(3)如果一個(gè)變量V初次讀取的時(shí)候是A值,并且在準(zhǔn)備賦值的時(shí)候檢查到它仍然是A值,那么我們就能說明它的值沒有被其他線程修改過嗎?很明顯不是,因?yàn)樵谶@段時(shí)間內(nèi)它的值可能被改為其他值,然后又被改回A,那CAS操作就會認(rèn)為它從來沒被改過,這個(gè)問題就被稱為 CAS 操作的“ABA” 問題;

關(guān)于樂觀鎖的實(shí)現(xiàn)方式有哪些問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道了解更多相關(guān)知識。

分享文章:樂觀鎖的實(shí)現(xiàn)方式有哪些-創(chuàng)新互聯(lián)
標(biāo)題來源:http://muchs.cn/article46/degghg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、微信小程序、建站公司網(wǎng)站排名、網(wǎng)站改版微信公眾號

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)