采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师好,我这边用java信号量的写法试了一下,如果缓冲区仅用普通链表作为队列,发现还是会有并发问题。 比如,队列中有较多空闲位置时,多个生产者线程可以通过emptyCount.acquire()同时进行生产,但因为用的是普通队列,多个线程同时add数据的话,其实只有一个数据是真正add进去的。 如果用了阻塞队列,那么也没有使用信号量的必要了,如果只用信号量来控制,又会有上面描述的并发问题,所以仅用信号量是不是无法解决生产者/消费者问题? 还请老师有空帮忙答疑解惑
信号量不是锁, 锁是一种特殊的信号量。 信号量控制进入临界区的线程数量,锁是控制临界区自由一个线程,所以,信号量是不保证同步的。
好的,我简单照着本节课件中的伪代码来写的 生产者消费者_信号量 demo,后来发现有问题,多谢老师解惑。
登录后可查看更多问答,登录/注册
深度剖析大厂面试高频真题,让你秒变offer收割机
1.5k 6
1.1k 11
1.1k 10
764 10
826 8