com*_*tty 6 c linux multithreading posix mutex
在以下函数中:
int pthread_mutexattr_setprotocol(pthread_mutexattr_t *attr,
int protocol);
Run Code Online (Sandbox Code Playgroud)
您可以为互斥属性定义协议。可以使用以下协议:
我知道选择pthread_prio_inherit时,保存锁的任务获取所有任务的最高优先级(进程(如果进程之间的进程)或线程之间的过程)。这可以防止优先级反转。但 PTHREAD_PRIO_PROTECT 似乎也这样做。所以我的问题是,这两种协议有什么区别?
请参阅POSIX 中的规范。
简而言之,差异在于:
使用 时PTHREAD_PRIO_INHERIT,持有锁的线程继承当前竞争锁的最高优先级线程的优先级(如果没有其他线程在尝试获取锁时被阻止,则不会提升优先级)。
使用 时PTHREAD_PRIO_PROTECT,持有锁的线程始终以较高的优先级运行,该优先级不是由竞争该锁的其他线程决定的,而是由基于每个锁配置的锁的属性(其优先级上限)决定的。
您可能还想查看有关该主题的维基百科文章,以了解选择其中一个或另一个的动机。
| 归档时间: |
|
| 查看次数: |
2170 次 |
| 最近记录: |