读写锁与记录锁的深入解析
1. 读写锁概述
读写锁在数据读取频繁而写入较少的场景下,能比普通互斥锁提供更高的并发性能。Unix 98 定义的读写锁函数,未来可能会出现在 Posix 标准中,这些函数与互斥锁函数类似。
读写锁可以通过互斥量和条件变量轻松实现。有的实现会优先处理等待的写者,而有的则优先处理等待的读者。在我们的实现中,优先处理等待的写者。
线程在调用 pthread-cond-wait 被阻塞时可能会被取消,我们通过使用取消清理处理程序解决了这个问题。
以下是一个清理写锁等待的函数示例:
static void
my-rwlock-cancel Ipthread-rwlock-wr1ock.c
rwlock~cancelwrwait(void *arg)
{
pthread-rwlock-t *rw;
rw = arg;
rw->rw-nwaitwriters--;
}
当使用新函数运行测试程序时,结果是正确的。例如:
solaris % testcancel
threadlo got a read lock
thread20 trying to obtain a write lock
rw-refcount = 0, rw-nwaitreaders = 0, rw-nwaitwriters = 0
2. 记录锁介绍
前面提到的读写锁
超级会员免费看
订阅专栏 解锁全文
172万+

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



