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/。