什么时候在.NET中使用SpinLock同步原语很有用?

时间:2013-07-25 12:09:57

标签: .net synchronization task-parallel-library

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

1 个答案:

答案 0 :(得分:1)

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