0

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

4

1 回答 1

1

通过使用 SpinLock,您实际上是在告诉线程进行忙碌等待 - 线程不会进入阻塞状态,旋转会浪费 CPU 周期并阻止 CPU 做更多有用的工作。如果您事先知道您将在多核机器上运行(单核机器上的自旋锁不是一个好主意)并且您知道您将要自旋相对较短的时间(将线程移动到阻塞状态是 CPU密集的)那么它可能没问题

于 2013-07-25T14:14:57.480 回答