一、什么是Lock?
Lock——字面上理解就是鎖上;鎖住;把……鎖起來的意思;
為什么要鎖?要鎖干什么?——回到現實中可想象到,這個衛生間我要上,其他人不要進來!(所以我要鎖住門);又或者土味情話所言,我要把你鎖在我的心里,然后在里面加個無限回圈陳述句,不給你出來,也不被別人所得,你只能是我的,哈哈哈哈....
上面的簡單想象,可以得到,我們之所以要鎖,就是因為我們想獨占某個資源(廁所and你的心愛人),或者在需要共用同一個資源的時候(更多的表現在多執行緒方面),多執行緒可以簡單的理解為,一個執行緒看作是一個人,多執行緒就是多個人在干活,每個人干每個人的事,互不干擾,如果你的代碼中出現類似(廁所這樣的公共資源),你就得加個鎖拉!不然多個人上同一個廁所,那畫面得.............咳咳咳~總之輕則資料例外,重則軟體崩潰,
Lock關鍵字主要是實作多執行緒同步
二、下面提供幾個簡單的小例子:
下面的例子是根據自身能力給的例子,如有不妥之處,還請各位多多指導!
1、新建一個Window表單應用程式——略~
2、添加一個鎖
private static object o = new object();
3、添加三個按鈕button
(1)執行緒1按鈕以及執行緒方法
按鈕1是實作開啟執行緒1;

執行緒方法:

this.Invoke()是一種托管方法——解決跨執行緒問題~
(2)執行緒2按鈕
同理
(3)同時執行兩個執行緒的按鈕

4、加鎖和沒加鎖區別
(1)加鎖效果

(2)不加鎖
去掉lock{}部分

執行緒1和2同時寫入了1,資料沖突
5、使用總結:
建鎖物件——private static object o = new object();
鎖住該鎖的地方——lock{};
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/55304.html
標籤:其他
