線程同步的幾種方式


關於線程同步的幾種方法:

 一、volatile關鍵字

  volatile是最簡單的一種同步方法,當然簡單是要付出代價的。它只能在變量一級做同步,volatile的含義就是告訴處理器, 不要將我放入工作內存, 請直接在主存操作我。(【轉自www.bitsCN.com 】)因此,當多線程同時訪問該變量時,都將直接操作主存,從本質上做到了變量共享。

 

public class A

{

private volatile int _i;

public int I

{

get { return _i; }

set { _i = value; }

}

}

 

 二、lock關鍵字

  lock是一種比較好用的簡單的線程同步方式,它是通過為給定對象獲取互斥鎖來實現同步的。它可以保證當一個線程在關鍵代碼段的時候,另一個線程不會進來,它只能等待,等到那個線程對象被釋放,也就是說線程出了臨界區。用法:

public void Function() 

{

object lockThis = new object (); 

lock (lockThis)

{

// Access thread-sensitive resources. 

}

}

 

三、使用線程安全類(Concurrent)

這些類可以單線程寫入,多線程讀取。有ConcurrentBagConcurrentSetConcurrentDictionary等等。

 

四、使用await async關鍵字來控制執行順序。

 


免責聲明!

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



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