说读写锁之前,先解释一下什么是自旋锁?
自旋锁就是,若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 的值
读者:
写者:
读写锁的初始化、销毁与线程的创建、等待:
执行结果: