侧边栏壁纸
博主头像
noerror

虚灵不寐,众理具而万事出。

  • 累计撰写 239 篇文章
  • 累计创建 9 个标签
  • 累计收到 2 条评论
标签搜索

目 录CONTENT

文章目录

pthread_rwlockattr_setkind_np函数用法详解

noerror
2022-10-04 / 0 评论 / 0 点赞 / 189 阅读 / 579 字 / 正在检测是否收录...

pthread_rwlockattr_setkind_np函数用法详解

pthread_rwlockattr_setkind_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 );
  • 编译链接选项
-pthread

pthread_rwlockattr_setkind_np函数常见使用错误

  • 链接错误
    undefined reference to `pthread_rwlockattr_setkind_np'
    解决办法:添加链接选项
-pthread
  • 编译错误
    warning: implicit declaration of function ‘pthread_rwlockattr_setkind_np’ [-Wimplicit-function-declaration]
    解决办法:包含头文件
#include <pthread.h>

pthread_rwlockattr_setkind_np函数详细描述

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 ()函数返回attr在指针pref 中引用的读写锁属性对象的锁类属性的值

pthread_rwlockattr_setkind_np函数返回值

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

pthread_rwlockattr_setkind_np函数错误码

  • EINVAL pref指定不支持的值。
0

评论区