c - 与 POSIX 系统上的调度有关的互斥体和线程优先级

标签 c pthreads posix mutex thread-priority

在 POSIX 系统(Linux 等)中,当多个线程锁定一个公共(public)互斥体时 - 是始终遵守锁定顺序,还是线程优先级偏向线程当在关键部分调度下一个线程时具有更高的优先级?

标准是否提到了有关行为的任何内容?因为据我所知,它似乎只提到了所需的接口(interface)。

请注意,我正在寻找任何符合 POSIX 的系统(不仅仅是 Linux)的指导,因此请随意提出其他操作系统(QNX、Minix 等)的行为建议

最佳答案

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

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

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

关于c - 与 POSIX 系统上的调度有关的互斥体和线程优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10380988/

相关文章:

在matlab中调用C函数的变量地址

C - 使用 pthread 并等待返回值

c - 从麦克风获取音频

c - 我应该缓存 dlsym 的返回值吗?

c++ - 如何设置和清除串口的RTS线。 C++ POSIX

c++ - 内存泄漏能走多远?

c++ - C++获取一个字符串的所有后缀

c++ - 错误代码 1024 tftp 服务器

c - 生产者消费者同步11

c - p_threads : Condition Variable Locking