private object o = new object(); public void Work() { lock(o) { //做一些需要線程同步的工作 } }
說白了就是防止同一個操作被鎖死的情況。比如說,日志的寫入,或者文件的讀取。當一個操作正在讀取某一個文件的時候,另一個操作也需要讀取某一個文件,導致第二個的操作就會報錯。
這個時候就需要使用lock鎖的使用。
lock鎖就是當第一個操作正在讀取某個文件的時候,第二個操作就只能等待讀取某個文件。直到第一個操作讀取完成,lock被釋放之后才能讀取。
說白了就是防止互相搶占資源的一個操作。
再說詳細一點就是
1、第一個操作lock(o)時,就是說,我要做相對應的操作了,這時候,object o就有了一個標記,說我已經被鎖住了
2、第二個操作的時候,看到object o被鎖住了,就只能等待,直到第一個操作完成之后,o被釋放了,然后第二個操作才能進行操作。
3、然后o就被第二個操作鎖住了,如此類推。
