關鍵字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{};
    

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM