互斥锁、读写锁和条件变量的理解

一、互斥锁是用来干嘛的?
1)我对互斥锁的理解:
互斥锁平时多作用于线程间对于共享资源的协调处理,一个共享资源在任意时刻最多只能被一个线程访问,否则很可能会出现数据践踏,所以我们要让线程间互斥,那我们就上一把锁。
2)互斥锁的作用:
当访问同一片内存资源时,只能够让一个线程进行操作。防止因为两个或者以上线程同时访问某一片内存空间而导致出现数据践踏。
3)什么场合使用互斥锁:
当多个线程要同时访问同一片内存时,使用互斥锁。

二、为什么要有读写锁?读写锁是用来干嘛的?
1)就像一场电影一样,肯定是好多人一起看电影(读锁),如果不是这样,那就造成很大的资源浪费,这时候就是用共享锁。
2)你要修改电影的某个细节,这时肯定就是写入东西(写锁),不能边看边写,这是互斥的现象,这时候就是用互斥锁。
3)读锁的产生是应对写锁的互斥。人正在看着电影就是为了告诉写锁不能进来修改,不能进来写操作。
4)假设我们要访问的共享资源,我们仅仅是对其进行读操作,我们可以只是加读锁,因为读锁是支持多把读锁同步进行的,它不是互斥的。
5)互斥锁只允许同一时间下一条线程对共享内存进行访问,而实际情况是在进行读操作的时候可以同时进行,只有在写操作的时候才需要互斥,使用读写锁可以大大的提高效率。

三、条件变量是什么?为什么会讲到条件变量?它适合什么场合使用
1)条件变量是由互斥锁引导出来的产物,线程因为某一个条件不成立,就会进入一个变量中等待,这个存放线程的变量就是条件变量,条件变量是必须要和互斥锁一起使用的!
2)适用于多条线程需要同时去访问同一片共享资源,而这片共享资源有一定的条件需要去满足,线程才会执行剩下的工作否则线程会一直等待条件满足!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值