日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# 乐观锁、悲观锁、共享锁、排它锁、互斥锁

發布時間:2024/8/26 C# 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# 乐观锁、悲观锁、共享锁、排它锁、互斥锁 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

悲觀鎖(Pessimistic Lock), 顧名思義,就是很悲觀,每次去拿數據的時候都認為別人會修改,所以每次在拿數據的時候都會上鎖,這樣別人想拿這個數據就會block直到它拿到鎖。傳統的關系型數據庫里邊就用到了很多這種鎖機制,比如行鎖,表鎖等,讀鎖,寫鎖等,都是在做操作之前先上鎖。?通過?jdbc?實現時?sql?語句只要在整個語句之后加?for update?即可。例如:?select …for update

樂觀鎖(Optimistic Lock), 顧名思義,就是很樂觀,每次去拿數據的時候都認為別人不會修改,所以不會上鎖,但是在更新的時候會判斷一下在此期間別人有沒有去更新這個數據,可以使用版本號等機制。樂觀鎖適用于多讀的應用類型,這樣可以提高吞吐量,像數據庫如果提供類似于write_condition機制的其實都是提供的樂觀鎖。

兩種鎖各有優缺點,不可認為一種好于另一種,像樂觀鎖適用于寫比較少的情況下,即沖突真的很少發生的時候,這樣可以省去了鎖的開銷,加大了系統的整個吞吐量。但如果經常產生沖突,上層應用會不斷的進行retry,這樣反倒是降低了性能,所以這種情況下用悲觀鎖就比較合適

?

共享鎖:(讀取)操作創建的鎖。其他用戶可以并發讀取數據,但任何事物都不能獲取數據上的排它鎖,直到已釋放所有共享鎖。 共享鎖(S鎖)又稱為讀鎖,若事務T對數據對象A加上S鎖,則事務T只能讀A;其他事務只能再對A加S鎖,而不能加X鎖,直到T釋放A上的S鎖。這就保證了其他事務可以讀A,但在T釋放A上的S鎖之前不能對A做任何修改。

共享鎖的使用

在第一個連接中執行以下語句 begin tran select * from table1 holdlock -holdlock人為加鎖 where B='b2' waitfor delay '00:00:30' --等待30秒 commit tran 在第二個連接中執行以下語句 begin tran select A,C from table1 where B='b2' update table1 set A='aa' where B='b2' commit tran 若同時執行上述兩個語句,則第二個連接中的select查詢可以執行 而update必須等待第一個事務釋放共享鎖轉為排它鎖后才能執行 即要等待30秒 排它鎖:排它鎖又稱為寫鎖((eXclusive lock,簡記為X鎖)),若事物T對數據對象A加上X鎖,則只允許T讀取和修改A,其它任何事務都不能再對A加任何類型的鎖,直到T釋放A上的鎖。它防止任何其它事務獲取資源上的鎖,直到在事務的末尾將資源上的原始鎖釋放為止。

排它鎖的使用

在第一個連接中執行以下語句
begin tran
update table1
set A='aa'
where B='b2'
waitfor delay '00:00:30' --等待30秒
commit tran
在第二個連接中執行以下語句
begin tran
select * from table1
where B='b2'
commit tran

若同時執行上述兩個語句,則select查詢必須等待update執行完畢才能執行即要等待30秒

?

互斥鎖(Mutex)

互斥鎖是一個互斥的同步對象,意味著同一時間有且僅有一個線程可以獲取它。

互斥鎖可適用于一個共享資源每次只能被一個線程訪問的情況

using System; using System.Collections.Generic; using System.Linq; using System.Text;using System.Threading;namespace MyTTCon {class shareRes{public static int count = 0;public static Mutex mutex = new Mutex();}class IncThread{int number;public Thread thrd;public IncThread(string name, int n){thrd = new Thread(this.run);number = n;thrd.Name = name;thrd.Start();}void run(){Console.WriteLine(thrd.Name + "正在等待 the mutex");//申請 shareRes.mutex.WaitOne();Console.WriteLine(thrd.Name + "申請到 the mutex");do{Thread.Sleep(1000);shareRes.count++;Console.WriteLine("In " + thrd.Name + "ShareRes.count is " + shareRes.count);number--;} while (number > 0);Console.WriteLine(thrd.Name + "釋放 the nmutex");// 釋放 shareRes.mutex.ReleaseMutex();}}class DecThread{int number;public Thread thrd;public DecThread(string name, int n){thrd = new Thread(this.run);number = n;thrd.Name = name;thrd.Start();}void run(){Console.WriteLine(thrd.Name + "正在等待 the mutex");//申請 shareRes.mutex.WaitOne();Console.WriteLine(thrd.Name + "申請到 the mutex");do{Thread.Sleep(1000);shareRes.count--;Console.WriteLine("In " + thrd.Name + "ShareRes.count is " + shareRes.count);number--;} while (number > 0);Console.WriteLine(thrd.Name + "釋放 the nmutex");// 釋放 shareRes.mutex.ReleaseMutex();}}class Program{static void Main(string[] args){IncThread mthrd1 = new IncThread("IncThread thread ", 5);DecThread mthrd2 = new DecThread("DecThread thread ", 5);mthrd1.thrd.Join();mthrd2.thrd.Join();}} }

?小結:

  悲觀鎖:查詢加鎖 【select ...... for update】

  樂觀鎖:修改加鎖 【版本號控制】

  排它鎖:事務A可以查詢、修改,直到事務A釋放為止才可以執行下一個事務

  共享鎖:事務A可以查詢、修改,同時事務B也可以查詢但不能修改

  互斥鎖:同一資源同一時間只能被一個線程訪問

轉載于:https://www.cnblogs.com/smile-live/p/7644583.html

總結

以上是生活随笔為你收集整理的C# 乐观锁、悲观锁、共享锁、排它锁、互斥锁的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 狠久久 | 久久久久久久久久福利 | 91人人澡人人爽 | 麻豆精品在线观看 | 无码人妻aⅴ一区二区三区 国产高清一区二区三区四区 | 亚洲在线精品视频 | 亚洲av无码乱码国产麻豆 | 69福利区 | 男操女视频免费 | 青青视频一区二区 | 永久在线观看 | 日韩在线视频一区二区三区 | 一级黄色特级片 | 性视频免费看 | 美女扒开尿口让男人捅爽 | 国产无遮挡又黄又爽又色视频 | 国产精品wwww | 中文视频一区 | 国产午夜啪啪 | 亚洲三级大片 | 97福利在线 | 久久久久久婷婷 | 婷婷国产成人精品视频 | 天天天天天干 | 99久久久无码国产 | 欧美老熟妇一区二区三区 | 色哟哟视频在线 | 韩国一区二区三区在线观看 | 日韩a在线播放 | 亚洲最大福利 | 92精品| 成人片黄网站久久久免费 | 欧美精品1| 无码一区二区三区在线观看 | av久色 | 国产精品高清无码在线观看 | 亚洲啪啪网址 | 国产福利一区二区视频 | 在线免费激情视频 | 骚虎av| 日韩av一区二区在线播放 | 91成人精品一区在线播放 | 精品三级视频 | 国产午夜福利100集发布 | 日韩一区二区三区四区五区六区 | 久久久无码精品亚洲无少妇 | 伦理片一区二区三区 | 日韩女同互慰一区二区 | 国产精品999在线观看 | 2019自拍偷拍| va在线视频 | 午夜免费福利小电影 | 菊肠扩张playh | 91在线观看欧美日韩 | 黑鬼巨鞭白妞冒白浆 | 夜夜嗨av禁果av粉嫩avhd | 国产污视频在线观看 | 亚洲精品中文无码AV在线播放 | 少妇精品一区 | 欧美成人三区 | 五号特工组之偷天换月 | 日韩视频免费播放 | 97精品人妻一区二区三区蜜桃 | 日本在线高清 | 精品国产一区二区三区四区阿崩 | 男女吻胸做爰摸下身 | 亚洲女同在线 | h片在线免费 | 午夜剧场免费在线观看 | 日韩精品中字 | 人物动物互动39集免费观看 | 99久久久无码国产精品不卡 | 欧美第一精品 | 欧美黄色网络 | 成人午夜福利视频 | 天天干夜夜爱 | 美女的隐私免费看 | 精品无码久久久久久久久果冻 | 午夜激情福利视频 | 成人看片网 | 免费av网站在线观看 | 在线观看欧美一区 | av资源网在线| 一区精品二区国产 | 99自拍偷拍视频 | 久99热| 综合色亚洲| 第一页在线视频 | 农村老熟妇乱子伦视频 | 国产欧美视频一区 | 在线成人中文字幕 | 亚洲涩情 | 人人艹人人| a级大片免费看 | 免费在线播放毛片 | 成人v | 日韩不卡av | 黄色香港三级三级三级 | 欧美1区 |