读写锁

读写锁是一种多线程同步机制,分为读模式和写模式,允许多个读取线程同时访问资源,而写操作互斥。在读多写少的场景下,读写锁能提高并发性能。其关键接口包括初始化、申请读写锁、尝试申请读写锁及解锁和销毁。数据库、缓存和磁盘间的交互是读写锁的典型应用。
摘要由CSDN通过智能技术生成

互斥锁只有加锁和不加锁两种状态,同一时间只能有一个线程加锁;
读写锁可以有三种状态:读模式下加锁(读锁)、写模式加锁(写锁)和不加锁;
读写锁的特点:
1)如果某线程申请了读锁,其他线程可以再申请读锁,但不能申请写锁;
2)如果某线程申请了写锁,其他线程既不能申请读锁,也不能申请写锁;
读写锁适合于对数据的读比写次数多的情况。
读写锁只是一种锁机制,适合的场景,但是,在程序中,并没有规定持有读锁就一定要读数据,持有写锁就一定要写数据;
读写锁接口:
1)初始化读写锁
int pthread_rwlock_init(pthread_rwlock_t* rwlock,const pthread_rwlockattr_t* attr) ;
2)申请读锁
int pthread_rwlock_rdlock(pthread_rwlock_t* rwlock) ;
3)申请写锁
int pthread_rwlock_wrlock(pthread_rwlock_t* rwlock) ;
4)尝试申请写锁,如果有线程持有读锁或写锁,返回失败,否则成功;
int pthread_rwlock_trywrlock(pthread_rwlock_t* rwlock) ;
尝试申请读锁,如果有线程持有写锁,返回失败;如果有线程(一个或者多个)持有读锁,返回成功;
int pthread_rwlock_tryrdlock(pthread_rwlock_t* rwlock) ;
5)解锁
int pthread_rwlock_unlock(pthread_rwlock_t* rwlock) ;
6)销毁读写锁
int pthread_rwlock_destroy(pthread_rwlock_t* rwlock) ;

典型应用:
数据库<–>缓存<–>磁盘

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值