【问题标题】:Why thread need to disable interrupts to implement lock?为什么线程需要禁用中断来实现锁?
【发布时间】:2015-04-20 17:49:02
【问题描述】:

我到处读到实现锁线程需要硬件支持 - 禁用中断。

无论我们如何选择实现锁,都必须有一些硬件 支持。实现锁的一种可能性是禁用中断,

【问题讨论】:

  • 这是一个可能性。这永远不会被使用,因为处理器 have this.
  • 这在任何多核 CPU 上都是不可能的,因为.. 多核。
  • @HansPassant 使用 CAS 的自旋锁并不总是最优的。有关示例,请参见 MCS 锁定。在争论中,MCS 应该更好。

标签: multithreading concurrency operating-system


【解决方案1】:

您所描述的是在单处理器系统上运行的旧操作系统中用于简单锁定的机制。即使这样,复杂的锁定(例如,对于数据库)也需要更多。

现在,对于多处理器系统,同时阻止所有处理器的中断将无济于事。

支持多处理的 CPU 具有内存互锁指令。旧 VAX 在位设置和设置指令上具有互锁分支,甚至在繁重的工作中具有从队列中移除的互锁指令。这种硬件支持已经存在很长时间了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    • 2015-02-18
    • 2016-08-07
    • 2016-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多