93-其它同步对象的属性

在你掌握了互斥量的属性(共享属性、robust 属性、类型属性)之后,其它的互斥与同步对象属性其实都是一样的。

因为前面已经对互斥量属性进行了一一研究,所以本文内容只要了解即可。知识都是相通的。

1. 读写锁的属性

读写锁唯一的属性就是进程共享属性,这和互斥量进程共享属性是一样一样的。它有两种情况:

  • PTHREAD_PROCESS_PRIVATE
  • PTHREAD_PROCESS_SHARED

相关函数如下:

int pthread_rwlockattr_init(pthread_rwlockattr_t *attr);
int pthread_rwlockattr_destroy(pthread_rwlockattr_t *attr);


int pthread_rwlockattr_getshared(const pthread_rwlockattr_t *attr, int *pshared);
int pthread_rwlockattr_setshared(pthread_rwlockattr_t *attr, int pshared);

2. 条件变量的属性

Single UNIX Specification 为条件变量定义了两个属性:

  • 进程共享属性
  • 时钟属性

条件变量属性的初始化函数:

int pthread_condattr_init(pthread_condattr_t *attr);
int pthread_condattr_destroy(pthread_condattr_t *attr);

2.1 进程共享属性

它有两种情况:

  • PTHREAD_PROCESS_PRIVATE
  • PTHREAD_PROCESS_SHARED

相关函数如下:

int pthread_condattr_getshared(const pthread_condattr_t *attr, int *pshared);
int pthread_condattr_setshared(pthread_condattr_t *attr, int pshared);

2.2 时钟属性

这个属性主要针对 pthread_cond_timewait 函数,它用来控制采用的是哪个时钟。

时钟 ID选项说明
CLOCK_REALTIME实时系统时间(类似于 time 函数)
CLOCK_MONOTONIC_POSIX_MONOTONIC_CLOCK没有负跳数的实时系统时间
CLOCK_PROCESS_CPUTIME_ID_POSIX_CPUTIME调用进程的 CPU 时间
CLOCK_THREAD_CPUTIME_ID_POSIX_THREAD_CPUTIME调用线程的 CPU 时间

相关函数如下:

int pthread_condattr_getclock(const pthread_condattr_t *attr, clockid_t *clock_id);
int pthread_condattr_setclock(pthread_condattr_t *attr, clockid_t clock_id);

注意:除了条件变量属性外,Single UNIX Specification 并没有为其他有超时等待函数的属性对象定义时钟属性。

3. barrier 属性

barrier 唯一的属性就是进程共享属性,同互斥量进程共享属性是一样,它有两种情况:

  • PTHREAD_PROCESS_PRIVATE
  • PTHREAD_PROCESS_SHARED

相关函数如下:

int pthread_barrierattr_init(pthread_barrierattr_t *attr);
int pthread_barrierattr_destroy(pthread_barrierattr_t *attr);


int pthread_barrierattr_getshared(const pthread_barrierattr_t *attr, int *pshared);
int pthread_barrierattr_setshared(pthread_barrierattr_t *attr, int pshared);

4. 总结

  • 本文内容只需要了解即可
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值