有关POSIX系统调度的互斥和线程优先级

时间:2012-04-30 09:02:59

标签: c pthreads posix mutex thread-priority

在POSIX系统(linux等)中,当多个线程锁定一个公共互斥锁时 - 是 总是 观察到的锁定顺序,还是线程优先级偏向线程在调度临界区中的下一个线程时,优先级更高?

标准是否提及有关行为的任何内容?因为据我所知,它似乎只提到了所需的界面。

请注意,我正在寻找任何POSIX符合系统(不仅仅是linux)的指导,所以请随时建议其他操作系统(QNX,Minix等)的行为。

1 个答案:

答案 0 :(得分:4)

当多个线程等待锁定相同的互斥锁时,当互斥锁变为可用时,优先级最高的线程将首先被解除阻塞。如果多个线程具有相同的优先级,则哪个线程未被阻塞将取决于所使用的调度算法,例如,使用FIFO策略,等待最长的线程将首先被唤醒。

线程优先级和同步是一个非常棘手的领域,您需要非常小心,不要以优先级倒置结束并导致死锁。

Butenhof的使用POSIX线程进行编程的第5.5章处理实时调度。