我曾几次向D编程语言运行时的维护者建议,内存分配器/垃圾收集器应使用自旋锁而不是常规的OS关键部分。这还没有真正流行起来。这是我认为自旋锁会更好的原因:

  • 至少在我做的综合基准测试中,当争用内存分配器/GC锁时,它比OS关键部分快几倍。编辑:凭经验,使用自旋锁甚至在单核环境中也没有可测量的开销,这可能是因为锁需要在内存分配器中保留如此短的时间。
  • 内存分配和类似的操作通常花费一小段时间片,甚至花费一小部分的上下文切换时间,在争用的情况下,与上下文切换很愚蠢。
  • 所讨论的实现中的垃圾回收总使世界停滞不前。收集期间不会有任何旋转。

  • 在内存分配器/垃圾收集器实现中使用旋转锁有什么好理由而不是

    最佳答案

    无论如何,在Windows上,关键部分对象已经可以选择执行此操作(http://msdn.microsoft.com/en-us/library/ms682530.aspx):



    希望其他平台也能效仿。

    10-03 01:11