pthread_mutexattr_setprioceiling(3C) 可用来设置互斥锁属性对象的优先级上限属性。
#include <pthread.h> int pthread_mutexattr_setprioceiling(pthread_mutexatt_t *attr, int prioceiling, int *oldceiling);
attr 指示以前调用 pthread_mutexattr_init() 时创建的互斥锁属性对象。
prioceiling 指定已初始化互斥锁的优先级上限。优先级上限定义执行互斥锁保护的临界段时的最低优先级。prioceiling 位于 SCHED_FIFO 所定义的优先级的最大范围内。要避免优先级倒置,请将 prioceiling 设置为高于或等于可能会锁定特定互斥锁的所有线程的最高优先级。
oldceiling 包含以前的优先级上限值。
如果成功完成,pthread_mutexattr_setprioceiling() 会返回 0。其他任何返回值都表示出现了错误。
如果出现以下任一情况,pthread_mutexattr_setprioceiling() 将失败并返回对应的值。
ENOSYS
描述:选项 _POSIX_THREAD_PRIO_PROTECT 未定义并且该实现不支持此函数。
如果出现以下任一情况,pthread_mutexattr_setprioceiling() 可能会失败并返回对应的值。
EINVAL
描述:attr 或 prioceiling 指定的值无效。
EPERM
描述:调用方无权执行该操作。