自旋锁只对具有真正并行处理能力的系统有效,即多核/处理器系统。这并不令人惊讶,因为这是它们设计的初衷。
尽管如此,共享资源的线程必须在不同的核心上执行。否则,情况就类似于单处理器系统。
这只是概率问题还是调度程序试图将互锁线程放在不同的CPU上以提供真正的并发性?
自旋锁只对具有真正并行处理能力的系统有效,即多核/处理器系统。这并不令人惊讶,因为这是它们设计的初衷。
尽管如此,共享资源的线程必须在不同的核心上执行。否则,情况就类似于单处理器系统。
这只是概率问题还是调度程序试图将互锁线程放在不同的CPU上以提供真正的并发性?
实际上,在代码中有效地使用自旋锁可能会很棘手,当然,它仅在获取锁的几率足够高时才能很好地发挥作用。如果不是这样,自旋锁会对性能有负面影响,因为它会延迟上下文切换,而可能需要另一个线程重新获得处理器并释放锁。 .NET 4.0的SpinLock类很有用,它为失败的自旋生成ETW事件。否则很少有文档描述。