樂觀鎖與悲觀鎖的區別

2021-09-19 11:10:58 字數 293 閱讀 1392

悲觀鎖總是假設最壞的的情況, 認為每次訪問共享資源的時候都會被別人修改去加鎖,等鎖釋放後其他執行緒或者程序才能訪問共享資源。(共享資源只給乙個執行緒用, 其他執行緒只能等待該執行緒把鎖才能訪問共享資源)

樂觀鎖總是假設最好的情況,認為每次訪問共享資源的時候都不會有人修改不加鎖,但是在更新時會去判斷在此期間有沒有更新了共享資源。一般採用版本號機制或者cas演算法實現。

使用場景

樂觀鎖,適用讀多寫少的場景( 當寫操作多時,多個執行緒訪問同一共享資源,只能有乙個執行緒訪問成功,其他的執行緒需要不斷的重試)

悲觀鎖,寫多讀少的場景。

樂觀鎖與悲觀鎖的區別

在多使用者環境中,在同一時間可能會有多個使用者更新相同的記錄,這會產生衝突。這就是著名的併發性問題。典型的衝突有 l 丟失更新 乙個事務的更新覆蓋了其它事務的更新結果,就是所謂的更新丟失。例如 使用者a把值從6改為2,使用者b把值從2改為6,則使用者a丟失了他的更新。l 髒讀 當乙個事務讀取其它完成...

悲觀鎖與樂觀鎖

悲觀鎖與樂觀鎖 悲觀鎖 pessimistic locking 顧名思義就是採用一種悲觀的態度來對待事務併發問題,我們認為系統中的併發更新會非常頻繁,並且事務失敗 了以後重來的開銷很大,這樣以來,我們就需要採用真正意義上的鎖來進行實現。悲觀鎖的基本思想就是每次一 個事務讀取某一條記錄後,就會把這條記...

樂觀鎖與悲觀鎖

悲觀鎖 pessimistic locking 顧名思義就是採用一種悲觀的態度來對待事務併發問題,我們認為系統中的併發更新會非常頻繁,並且事務失敗了以後重來的開銷很大,這樣以來,我們就需要採用真正意義上的鎖來進行實現。悲觀鎖的基本思想就是每次乙個事務讀取某一條記錄後,就會把這條記錄鎖住,這樣 其它的...