dsi*_*cha 8 concurrency garbage-collection mutex memory-management d
我已经向D编程语言运行时的维护者建议了几次内存分配器/垃圾收集器应该使用自旋锁而不是常规的OS关键部分.这并没有真正流行起来.以下是我认为自旋锁更好的原因:
有没有充分的理由不在内存分配器/垃圾收集器实现中使用自旋锁?
无论如何,在 Windows 上,关键部分对象已经可以选择执行此操作(http://msdn.microsoft.com/en-us/library/ms682530.aspx):
线程使用InitializeCriticalSectionAndSpinCount 或SetCriticalSectionSpinCount 函数指定临界区对象的旋转计数。自旋是指当一个线程试图获取一个被锁定的临界区时,该线程进入一个循环,检查锁是否被释放,如果锁没有释放,则该线程进入睡眠状态。在单处理器系统上,自旋计数被忽略,临界区自旋计数设置为 0(零)。在多处理器系统上,如果临界区不可用,则调用线程会在对与临界区关联的信号量执行等待操作之前旋转 dwSpinCount 次。如果临界区在自旋操作期间变得空闲,则调用线程将避免等待操作。
如果其他平台还没有这样做的话,希望其他平台也能效仿。
| 归档时间: |
|
| 查看次数: |
1218 次 |
| 最近记录: |