Qt信号量QSemaphore认识一下

原文链接:http://www.fearlazy.com/index.php/post/100.html 

  QSemaphore也是一个线程同步工具,这个工具像是QMutex的升级版。对于QMutex而言,只要一个线程拿到QMutex的使用权,其他线程再想要拿就必须等着。QSemaphore的使用权(或称资源)数量可以是多个,假如设置了QSemaphore的使用权有10个,第一个线程请求了5个剩下5个,第二个线程可以再请求小于等于5个使用权。若第二个线程想要请求8个则会失败,第二个线程只能继续等待其他线程释放资源。

    举个公共厕所的例子,假如公共厕所有5个坑,QSemaphore是公共厕所的指示牌,指示牌上有五个指示灯。刚开始的时候灯是全灭的,表示坑都可用。这时候来了一个人,他看到有5个指示灯全是灭的,于是进去占了一个坑,有一盏灯亮了。又过了一会儿来了一对基友,他们看到还有4个指示灯是灭的,于是进去占了两个坑,又有两盏灯亮了。接着又来两人占满了5个坑,5盏灯全亮了。这时候又来了一个人,看到5盏灯全亮了,没办法只能在门外等着,直到里面有人出来,指示灯熄灭。

    写个测试代码:

    1.定义一个公共数据bool数组,它有5个元素,与之对应的QSemaphore也是5个元素。

blob.png

    2.定义公共数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fearlazy

打赏是不可能的

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值