我已经查看了SO,但没有找到答案:在Linux用户空间程序中创建pthread互斥锁时,默认情况下这些互斥锁具有哪些策略?见https://linux.die.net/man/3/pthread_mutexattr_setprotocol
似乎最好的默认策略是优先级上限,即PTHREAD_PRIO_PROTECT,至少对于我的应用程序而言;)
另外,我是否可以在C ++ std :: mutexes上设置优先级继承策略,我怀疑C ++ std :: mutex无论如何都会成为Linux中的futex,和pthread互斥体一样吗?
答案 0 :(得分:2)
属性的默认值应为PTHREAD_PRIO_NONE。
不幸的是,就我所知,没有办法在std::mutex
上设置此项。有一个std::mutex::native_handle
函数可用于访问基础pthread_mutex_t *
。但是,更改其上的任何属性已经太晚了,因为pthread_mutex_init
由std::mutex
构造函数执行,并且根据POSIX standard again:
尝试初始化已初始化的互斥锁会导致未定义的行为。