请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

信号量解决死锁,缓冲区如果不用阻塞队列不会有并发问题吗

老师好,我这边用java信号量的写法试了一下,如果缓冲区仅用普通链表作为队列,发现还是会有并发问题。
比如,队列中有较多空闲位置时,多个生产者线程可以通过emptyCount.acquire()同时进行生产,但因为用的是普通队列,多个线程同时add数据的话,其实只有一个数据是真正add进去的。
如果用了阻塞队列,那么也没有使用信号量的必要了,如果只用信号量来控制,又会有上面描述的并发问题,所以仅用信号量是不是无法解决生产者/消费者问题?
还请老师有空帮忙答疑解惑

正在回答 回答被采纳积分+3

1回答

求老仙 2021-11-22 14:22:30

信号量不是锁, 锁是一种特殊的信号量。 信号量控制进入临界区的线程数量,锁是控制临界区自由一个线程,所以,信号量是不保证同步的。 

0 回复 有任何疑惑可以回复我~
  • 提问者 Martin_zyt #1
    好的,我简单照着本节课件中的伪代码来写的 生产者消费者_信号量 demo,后来发现有问题,多谢老师解惑。
    回复 有任何疑惑可以回复我~ 2021-11-22 17:59:05
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信