多线程编程指南

设置互斥锁属性的优先级上限

pthread_mutexattr_setprioceiling(3C) 可用来设置互斥锁属性对象的优先级上限属性。

pthread_mutexattr_setprioceiling 语法

#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 返回值

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

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


ENOSYS

描述:

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

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


EINVAL

描述:

attrprioceiling 指定的值无效。


EPERM

描述:

调用方无权执行该操作。