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

时间:2017-04-05 14:35:56

标签: c++ linux linux-kernel pthreads

我已经查看了SO,但没有找到答案:在Linux用户空间程序中创建pthread互斥锁时,默认情况下这些互斥锁具有哪些策略?见https://linux.die.net/man/3/pthread_mutexattr_setprotocol

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

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

1 个答案:

答案 0 :(得分:2)

根据POSIX standard

  

属性的默认值应为PTHREAD_PRIO_NONE。

不幸的是,就我所知,没有办法在std::mutex上设置此项。有一个std::mutex::native_handle函数可用于访问基础pthread_mutex_t *。但是,更改其上的任何属性已经太晚了,因为pthread_mutex_initstd::mutex构造函数执行,并且根据POSIX standard again

  

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