31、线程编程:Pthreads 的高级应用与实现

线程编程: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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值