记录知识-------信号量和互斥量

本文介绍了信号量和互斥量的概念及其在并发控制中的作用。信号量通过一个整型变量控制并发访问,保证原子操作,可用于限制并发线程数或实现同步。互斥量则通过锁定机制保护临界区,确保同一时间只有一个线程访问。条件变量允许线程在特定条件满足时阻塞和唤醒,用于更复杂的同步场景。文中以生产者-消费者问题为例,阐述了这些机制的实际应用。
摘要由CSDN通过智能技术生成

信号量的定义:

它使用一个整型变量来累计唤醒次数,供以后使用。

原子操作:

是指一组相关联的操作要么都不间断地执行,要么都不执行。

 

下面有两种操作:down 和 up ,对一信号量执行down操作,则是检查其值是否大于0。若该值大于0,则将其值减1并继续,若该值为0,则进程将睡眠,而且此时down操作并未结束。(在检查数值,修改变量值以及可能发生的睡眠操作均作为一个单一的,不可分割的原子操作完成),保证一旦一个信号量操作开始,则在该操作完成或阻塞之前,其他进程均不允许访问该信号量。

刚开始看这段话有点懵,然后看了别人的回答;我觉得还挺好理解的:

(灵剑/知乎):

信号量就是在一个叫做互斥区的门口放一个盒子,盒子里面装着固定数量的小球,每个线程过来的时候,都从盒子里面摸走一个小球,然后去互斥区里面浪(?),浪开心了出来的时候,再把小球放回盒子里。如果一个线程走过来一摸盒子,得,一个球都没了,不拿球不让进啊,那就只能站在门口等一个线程出来放回来一个球,再进去。这样由于小球的数量是固定的,那么互斥区里面的最大线程数量就是固定的,不会出现一下进去太多线程把互斥区给挤爆了的情况。这是用信号量做并发量限制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值