一、什麼是Lock? Lock——字面上理解就是鎖上;鎖住;把……鎖起來的意思; 為什麼要鎖?要鎖乾什麼?——回到現實中可想象到,這個衛生間我要上,其他人不要進來!(所以我要鎖住門);又或者土味情話所言,我要把你鎖在我的心裡,然後在裡面加個無限迴圈語句,不給你出來,也不被別人所得,你只能是我的,哈哈 ...
一、什麼是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{};