锁定多处理器系统

时间:2014-11-20 03:57:56

标签: multithreading operating-system synchronization locking

如果来自不同核心/ cpu的两个线程试图在同一时间获取锁定,那么它如何决定哪个线程将首先获得锁定?

1 个答案:

答案 0 :(得分:0)

我不确定如何回答这个问题,但这是我的想法:

  1. 我认为在完全同时发生这种情况的可能性很小。

  2. 可能会为每个线程分配一些优先级。具有最高优先级的线程将获得锁定。可以明确地保持该优先级,例如整数值,或者它 可能是其他一些指标(例如,哪个线程执行的时间更长)。

  3. 另一种原始方法是始终将锁定给在较低“cpu”号上运行的线程。这将是一个简单的打破平局。

  4. 许多最新的锁定算法将分阶段运行。因此,在任何时候,可能有n个线程对某些锁具有“需要”。通常,它们会排队,可能具有一定的优先级(如上所述)。

  5. 我希望这会有所帮助,但正如我所说,我不确定这是否正确,这只是一个有根据的猜测。