C#_關鍵字:Lock的解釋和使用

來源:互聯網
上載者:User

標籤:res   情況下   data   his   合規   not   data-   style   hover   

定義

  lock關鍵字,互斥鎖,通過鎖住某一對象從而將語句塊({})裡面的代碼設定為臨界區。 

  線程線上性執行代碼時若遇到互斥鎖,必須先申請互斥鎖的訪問權,若訪問成功,則繼續線性訪問互斥鎖後的臨界區代碼塊。聲明如下:  

1 Object thisLock = new Object();2 lock (thisLock)3 {4     // Critical code section.5 }

  lock 關鍵字可確保當一個線程位於代碼的臨界區時,另一個線程不會進入該臨界區。 如果其他線程嘗試進入鎖定的代碼,則它將一直等待(即被阻止),直到該對象被釋放。

使用
  •   鎖定的對象

  鎖定的對象不能是Public類型,或者 lock (this)、lock (typeof (MyType)) 和 lock ("myLock") 使用都是不符合規範。

  Lock的對象只有在非外部存取的情況下才不會對外部的線程代碼產生影響。由於lock (this)、lock (typeof (MyType)) 和 lock ("myLock")中的this,typeof(MyType)有可能被外部存取,外部代碼若存在與"myLock"相同的字串,這些對象都會被鎖住,對進程代碼產生不可預測的影響。故而建議使用Private對象作為鎖的對象。

C#_關鍵字:Lock的解釋和使用

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.