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