读写锁
Posted ZDF0414
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了读写锁相关的知识,希望对你有一定的参考价值。
说读写锁之前,先解释一下什么是自旋锁? 自旋锁就是,若P不到资源,它不会被挂起,而是一直去看是否有资源就绪。读写锁实际是一种特殊的自旋锁,它把对共享资源的访问者划分成读者和写者,读者只对共享资源进行读访问,写者则需要对共享资源进行写操作。
这种锁相对于自旋锁而言,能提高并发性,因为在多处理器系统中,它允许同时有多个读者来访问共享资源,最大可能的读者数为实际的逻辑CPU数。写者是排他性的,
一个读写锁同时只能有一个写者或多个读者(与 CPU数相关),但不能同时既有读者又有写者。和前面一样,有响应的接口来完成读写锁的功能。
一、读写锁的类型 :pthread_rwlock_t; 二、读写锁的加锁方式有两种: (1)读者需要加读锁:pthread_rwlock_rdlock (2)写者需要加写锁:pthread_rwlock_wrlock 返回值:加锁成功-->ret==0,失败-->ret==error num
三、读写锁的初始化与释放: 返回值:加锁成功-->ret==0,失败-->ret==error num
四、读写锁的应用: 读写锁的定义,以及要访问的临界资源 buf,读者读取 buf 的值,写者修改 buf 的值 读者:
写者:
读写锁的初始化、销毁与线程的创建、等待:
执行结果:
以上是关于读写锁的主要内容,如果未能解决你的问题,请参考以下文章