线程编程:Pthreads 的高级应用与实现
1. 线程等待与条件满足
在某些线程执行场景中,执行线程会最多等待 10 秒,以等待条件被满足。这里会使用 <time.h> 中的 time() 函数来定义 time.tv_sec 。调用 time(NULL) 会得到自 1970 年 1 月 1 日以来流逝的绝对时间(以秒为单位)。如果 10 秒后没有信号到达,在再次评估条件之前,会调用 timed_out_work() 函数。
2. 扩展锁机制
普通的互斥锁变量在保护共享数据结构时,同一时间只允许一个线程进行访问(读或写)。而读写锁机制则对这一机制进行了扩展,允许同一时间有任意数量的读线程,但同一时间只允许一个写线程。
2.1 读写锁变量的定义
通过结合互斥锁变量和条件变量,定义读写锁变量(r/w 锁变量),代码如下:
typedef struct rw_lock {
int num_r, num_w;
pthread_mutex_t mutex;
pthread_cond_t cond;
} rw_lock_t;
其中, num_r 指定当前的读许可数量, num_w 指定当前的写许可数量, num_w 的最大值应为 1。互斥锁变量 mut
超级会员免费看
订阅专栏 解锁全文

33

被折叠的 条评论
为什么被折叠?



