2013-02-27 96 views
3

MSDN "Thread-Safe Collections .NET Framework 4"狀態:NET 4.0 SpinWait方法與4.0之前的SpinWait()有什麼不同?

「一些併發集合類型的使用輕質 同步機制如SpinLockSpinWaitSemaphoreSlim,和CountdownEvent,這在.NET框架 4是新的」

雖然MSDN網站告知SpinWaitwas was available as far as .NET 1.1而另一個MSDN文章starts SpinWaitwas from .NET 4.0

好,好奇心是由李·格里索姆評論回答What is the difference between SynchronizedCollection and the other concurrent collections?

「@馬特,在.NET4併發類使用SpinWait對象,以解決 線程安全的,而不是Monitor.Enter /退出(又名關鍵部分)?「

以及第一NSDN報指出SpinWait是新的.NET 4.0

那麼,是不是新的或不?
如果新的話又如何?

+1

從查看你的鏈接,並沒有其他的知識,似乎在.NET 1.1中存在* a *'SpinWait'函數,在.NET 4.0中添加了'SpinWait'結構 – 2013-02-27 11:25:33

回答

3

的結構System.Threading.SpinWait的是一個全新的.NET 4.0。從.NET 1.0開始,方法System.Threading.Thread.SpinWait()就存在了。

請注意System.Threading.SpinWait內部呼叫System.Threading.Thread.SpinWait()。有關詳細信息,請參閱Joe Duffy的「Windows上的並行編程」(第14章,「自旋等待」一節)。

+0

哦,[再次那本書](http://stackoverflow.com/a/15110525/2031316)。沒有更多的.NET併發書籍,只有一本? – Fulproof 2013-02-27 13:05:25

7

System.Threading.SpinWait結構引入.NET 4. System.Threading.Thread.SpinWait方法,因爲.NET 1.0一直存在。

從文檔爲SpinWait結構:

SpinWait不是普通的應用程序通常是有用的。在大多數情況下,您應該使用.NET Framework提供的同步類,例如Monitor。然而,對於需要旋轉等待的大多數用途,SpinWait類型應優於SpinWait方法。

注意,說你不應該使用它們中的大多數情況下:)

+0

在我看來,所有的答案關於線程安全性是線程不安全的。陰謀遏制我從多線程編程 – Fulproof 2013-02-27 13:32:18