个性化阅读
专注于IT技术分析

TSL的优先级倒置

在TSL机制中, 可能存在优先级倒置的问题。假设有两个协作线程, P1和P2。

P1的优先级为2, 而P2的优先级为1。P1较早到达并由CPU调度。由于这是一个协作线程, 并且要在关键部分执行, 因此它将通过将lock变量设置为1进入关键部分。

现在, P2到达就绪队列。 P2的优先级高于P1, 因此根据优先级调度, P2被调度, P1被抢占。 P2也是一个协作线程, 希望在关键部分内执行。

尽管P1被抢占, 但由于P1尚未完成且尚未完成其关键部分, 因此锁变量的值将显示为1。

P1需要完成关键部分, 但根据调度算法, CPU与P2相同。 P2希望在关键部分执行, 但是根据同步机制, 关键部分位于P1中。

这是一种锁, 其中每个进程都不执行也不完成。这种锁称为自旋锁。

这与死锁不同, 因为它们没有处于阻塞状态。一个处于就绪状态, 另一个处于运行状态, 但是两个都没有执行。

赞(0)
未经允许不得转载:srcmini » TSL的优先级倒置

评论 抢沙发

评论前必须登录!