多线程编程指南

获取互斥锁属性的优先级上限

pthread_mutexattr_getprioceiling(3C) 可用来获取互斥锁属性对象的优先级上限属性。

pthread_mutexattr_getprioceiling 语法

#include <pthread.h>



int pthread_mutexattr_getprioceiling(const pthread_mutexatt_t *attr, 

						int *prioceiling);

attr 指定以前调用 pthread_mutexattr_init() 时创建的属性对象。


注 –

仅当定义了 _POSIX_THREAD_PRIO_PROTECT 符号时,attr 互斥锁属性对象才会包括优先级上限属性。


pthread_mutexattr_getprioceiling() 返回 prioceiling 中已初始化互斥锁的优先级上限。优先级上限定义执行互斥锁保护的临界段时的最低优先级。prioceiling 位于 SCHED_FIFO 所定义的优先级的最大范围内。要避免优先级倒置,请将 prioceiling 设置为高于或等于可能会锁定特定互斥锁的所有线程的最高优先级。

pthread_mutexattr_getprioceiling 返回值

如果成功完成,pthread_mutexattr_getprioceiling() 会返回 0。其他任何返回值都表示出现了错误。

如果出现以下任一情况,pthread_mutexattr_getprioceiling() 将失败并返回对应的值。


ENOSYS

描述:

_POSIX_THREAD_PRIO_PROTECT 选项未定义并且该实现不支持此函数。

如果出现以下任一情况,pthread_mutexattr_getprioceiling() 可能会失败并返回对应的值。


EINVAL

描述:

attr 指定的值无效。


EPERM

描述:

调用方无权执行该操作。