PTHREAD_RWLOCKATTR_SETKIND_NP - Linux手册页

时间:2019-08-20 18:01:04  来源:igfitidea点击:

Section: C Library Functions (3)
更新日期: 2020-08-13

名称

pthread_rwlockattr_setkind_np,pthread_rwlockattr_getkind_np-设置/获取线程读写锁属性对象的读写锁种类

语法

#include <pthread.h>

int pthread_rwlockattr_setkind_np(pthread_rwlockattr_t *attr,
                                   int pref);
int pthread_rwlockattr_getkind_np(const pthread_rwlockattr_t *attr,
                                   int *pref);

Compile and link with -pthread.

Feature Test Macro Requirements for glibc (see
feature_test_macros(7)):

pthread_rwlockattr_setkind_np(),pthread_rwlockattr_getkind_np():

_XOPEN_SOURCE>= 500 || _POSIX_C_SOURCE>= 200809L

说明

pthread_rwlockattr_setkind_np()函数将attr引用的读写锁定属性对象的"锁定种类"属性设置为pref中指定的值。参数pref可以设置为以下之一:

PTHREAD_RWLOCK_PREFER_READER_NP
这是默认值。一个线程可以持有多个读锁;也就是说,读取锁是递归的。根据《单一Unix规范》,当读取器尝试放置锁并且没有写入锁但写入器正在等待时,行为未指定。由PTHREAD_RWLOCK_PREFER_READER_NP设置的优先级授予读取器,意味着即使写入器正在等待,读取器也将收到请求的锁。只要有读者,作家就会饿死。
PTHREAD_RWLOCK_PREFER_WRITER_NP
这旨在用作PTHREAD_RWLOCK_PREFER_READER_NP的写锁定模拟。 glibc忽略了这一点,因为支持递归读锁的POSIX要求将导致该选项创建琐碎的死锁;而是使用PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP,以确保应用程序开发人员不会采用递归读取锁,从而避免了死锁。
PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP
只要不以递归方式进行任何读取锁定,就将锁定类型设置为此可以避免编写者饥饿。

pthread_rwlockattr_getkind_np()函数返回指针pref中attr引用的读写锁定属性对象的锁定种类属性的值。

返回值

成功时,这些函数将返回0。给定有效的指针参数,pthread_rwlockattr_getkind_np()总是成功。发生错误时,pthread_rwlockattr_setkind_np()返回一个非零错误号。

错误说明

EINVAL
pref指定不受支持的值。

版本

pthread_rwlockattr_getkind_np()和pthread_rwlockattr_setkind_np()函数首先出现在glibc 2.1中。

遵循规范

这些功能是非标准的GNU扩展。因此名称中的后缀" _np"(不可移植)。

另外参见

pthreads(7)

出版信息

这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/