NET 4.0 SpinWait方法与4.0之前的SpinWait()有何不同?
MSDN “线程安全集合.NET Framework 4”声明:
“一些并发集合类型使用轻量级同步机制,如SpinLock , SpinWait , SemaphoreSlim和CountdownEvent ,它们是.NET Framework 4中的新增function”
虽然MSDN网站告诉SpinWaitwas可用于.NET 1.1,而另一篇MSDN文章从.NET 4.0启动SpinWaitwas
好吧,好奇心来自Lee Grissom的评论,以回答SynchronizedCollection和其他并发集合之间的区别是什么? :
“@Matt,.NET4并发类使用
SpinWait
对象来解决线程安全而不是Monitor.Enter / Exit(又称Critical部分)?”
以及第一个NSDN引用声明SpinWait
是.NET 4.0的新手
那么,它是新的还是不是?
如果新的那么如何?
struct System.Threading.SpinWait
是.NET 4.0的新增function。 System.Threading.Thread.SpinWait()
方法自.NET 1.0以来就存在。
请注意, System.Threading.SpinWait
内部调用System.Threading.Thread.SpinWait()
。 有关详细信息,请参阅Joe Duffy撰写的“Windows上的并发编程”(第14章“旋转等待”一节)。
System.Threading.SpinWait
结构被引入.NET 4.自.NET 1.0以来, System.Threading.Thread.SpinWait
方法已经存在。
来自SpinWait
结构的文档:
SpinWait通常不适用于普通应用程序。 在大多数情况下,您应该使用.NET Framework提供的同步类,例如Monitor。 但是,对于需要旋转等待的大多数目的,
SpinWait
类型应优先于SpinWait
方法。
请注意,在大多数情况下,您不应该使用其中任何一个的部分:)