多线程编程指南

设置互斥锁属性的协议

pthread_mutexattr_setprotocol(3C) 可用来设置互斥锁属性对象的协议属性。

pthread_mutexattr_setprotocol 语法

#include <pthread.h>



int pthread_mutexattr_setprotocol(pthread_mutexattr_t *attr, int protocol);

attr 指示以前调用 pthread_mutexattr_init() 时创建的互斥锁属性对象。

protocol 可定义应用于互斥锁属性对象的协议。

pthread.h 中定义的 protocol 可以是以下值之一:PTHREAD_PRIO_NONEPTHREAD_PRIO_INHERITPTHREAD_PRIO_PROTECT

如果某个线程调用 sched_setparam() 来更改初始优先级,则调度程序不会采用新优先级将该线程移到调度队列末尾。

一个线程可以同时拥有多个混合使用 PTHREAD_PRIO_INHERITPTHREAD_PRIO_PROTECT 初始化的互斥锁。在这种情况下,该线程将以通过其中任一协议获取的最高优先级执行。

pthread_mutexattr_setprotocol 返回值

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

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


ENOSYS

描述:

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


ENOTSUP

描述:

protocol 指定的值不受支持。

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


EINVAL

描述:

attrprotocol 指定的值无效。


EPERM

描述:

调用方无权执行该操作。