Linux 上 pthread 互斥锁的默认优先级继承策略



我在SO上四处寻找,但没有找到答案:在Linux用户空间程序中创建pthread互斥锁时,这些互斥锁默认具有哪种策略?请参阅 https://linux.die.net/man/3/pthread_mutexattr_setprotocol

似乎最好的默认策略是优先级上限,即 PTHREAD_PRIO_PROTECT,至少对于我的应用程序;)

另外,我是否可以在 C++ std::mutex 上设置优先级继承策略,我怀疑 C++ std::mutex 无论如何都会是 Linux 中的 futex,就像 pthread mutex 一样?

根据 POSIX 标准:

属性的默认值应为 PTHREAD_PRIO_NONE。

不幸的是,据

我所知,没有办法将其设置在std::mutex上。有一个std::mutex::native_handle函数可用于访问底层pthread_mutex_t *。但是,更改它的任何属性已经太晚了,因为pthread_mutex_init是由std::mutex构造函数执行的,并且再次根据 POSIX 标准:

尝试初始化已初始化的互斥锁会导致未定义的行为。

最新更新