我在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 标准:
尝试初始化已初始化的互斥锁会导致未定义的行为。