天天看點

線程同步基礎知識點

線程同步基礎知識點

1.原子操作(Interlocked):所有方法都是執行一次原子讀取或一次寫入操作。

2.lock()語句:避免鎖定public類型,否則執行個體将超出代碼控制的範圍,定義private對象來鎖定。

3.Monitor實作線程同步

通過Monitor.Enter() 和 Monitor.Exit()實作排它鎖的擷取和釋放,擷取之後獨占資源,不允許其他線程通路。

還有一個TryEnter方法,請求不到資源時不會阻塞等待,可以設定逾時時間,擷取不到直接傳回false。

4.ReaderWriterLock

當對資源操作讀多寫少的時候,為了提高資源的使用率,讓讀操作鎖為共享鎖,多個線程可以并發讀取資源,而寫操作為獨占鎖,隻允許一個線程操作。

5.事件(Event)類實作同步

事件類有兩種狀态,終止狀态和非終止狀态,終止狀态時調用WaitOne可以請求成功,通過Set将時間狀态設定為終止狀态。

5.1 AutoResetEvent(自動重置事件)

5.2 ManualResetEvent(手動重置事件)

6.信号量(Semaphore)

信号量是由核心對象維護的int變量,為0時,線程阻塞,大于0時解除阻塞,當一個信号量上的等待線程解除阻塞後,信号量計數+1。

線程通過WaitOne将信号量減1,通過Release将信号量加1,使用很簡單。

7.互斥體(Mutex)

獨占資源,用法與Semaphore相似。

8.跨程序間的同步

通過設定同步對象的名稱就可以實作系統級的同步,不同應用程式通過同步對象的名稱識别不同同步對象。

本文來自部落格園,作者:農碼一生,轉載請注明原文連結:https://www.cnblogs.com/wml-it/p/14808432.html

技術的發展日新月異,随着時間推移,無法保證本部落格所有内容的正确性。如有誤導,請大家見諒,歡迎評論區指正! 個人開源代碼連結: GitHub:

https://github.com/ITMingliang

Gitee:

https://gitee.com/mingliang_it

GitLab:

https://gitlab.com/ITMingliang

進開發學習交流群:
線程同步基礎知識點

繼續閱讀