如果来自不同核心/ cpu的两个线程试图在同一时间获取锁定,那么它如何决定哪个线程将首先获得锁定?
答案 0 :(得分:0)
我不确定如何回答这个问题,但这是我的想法:
我认为在完全同时发生这种情况的可能性很小。
可能会为每个线程分配一些优先级。具有最高优先级的线程将获得锁定。可以明确地保持该优先级,例如整数值,或者它 可能是其他一些指标(例如,哪个线程执行的时间更长)。
另一种原始方法是始终将锁定给在较低“cpu”号上运行的线程。这将是一个简单的打破平局。
许多最新的锁定算法将分阶段运行。因此,在任何时候,可能有n个线程对某些锁具有“需要”。通常,它们会排队,可能具有一定的优先级(如上所述)。
我希望这会有所帮助,但正如我所说,我不确定这是否正确,这只是一个有根据的猜测。