93-其它同步对象的属性
原创
©著作权归作者所有:来自51CTO博客作者mb63083a7dd962a的原创作品,请联系作者获取转载授权,否则将追究法律责任
在你掌握了互斥量的属性(共享属性、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
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
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
4. 总结