2013-07-25 36 views
0

我学习.NET并行编程的基础知识,我想知道为什么会有人需要使用SpinLock同步原语。我读过使用这种机制避免了在等待同步原语释放时重新计划(当等待时间很短时它是值得的),但是有什么方法可以衡量“有效性”吗?我不想作出是否使用SpinLock的决定,或者仅仅因为有人说'你在大多数情况下不应该这样做'。什么时候在.NET中使用SpinLock同步原语很有用?

+3

没有[这](http://msdn.microsoft.com/en-us/library/dd460716.aspx)帮助? (当使用Google搜索'SpinLock c#'时的第二个结果) – I4V

+0

回答这个问题很难。但是,我同意:'大多数情况下你不应该那样做'。即使.NET Framework似乎也很少使用它。 –

+0

我想这是在这个问题中解释: http://stackoverflow.com/questions/5869825/when-should-one-use-a-spinlock-instead-of-mutex –

回答

1

使用自旋锁,你实际上是告诉线程做一个忙等待 - 线程是不会到阻塞状态,纺纱废物的CPU周期和防止CPU做更多有益的工作。如果您事先知道您将在多核机器上运行(单核机器上的旋转锁定不是一个好主意),并且您知道您将在相对较短的时间内旋转(将线程移至阻塞状态是一个CPU密集的),那么它可能是OK

相关问题