c#中lock的使用


private object o = new object();
public void Work()

{
  lock(o)
  {
    //做一些需要線程同步的工作
  }
}

說白了就是防止同一個操作被鎖死的情況。比如說,日志的寫入,或者文件的讀取。當一個操作正在讀取某一個文件的時候,另一個操作也需要讀取某一個文件,導致第二個的操作就會報錯。

這個時候就需要使用lock鎖的使用。

lock鎖就是當第一個操作正在讀取某個文件的時候,第二個操作就只能等待讀取某個文件。直到第一個操作讀取完成,lock被釋放之后才能讀取。

說白了就是防止互相搶占資源的一個操作。

 

再說詳細一點就是

1、第一個操作lock(o)時,就是說,我要做相對應的操作了,這時候,object o就有了一個標記,說我已經被鎖住了

2、第二個操作的時候,看到object o被鎖住了,就只能等待,直到第一個操作完成之后,o被釋放了,然后第二個操作才能進行操作。

3、然后o就被第二個操作鎖住了,如此類推。

參考:https://www.cnblogs.com/zwt-blog/p/4812627.html


免責聲明!

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



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