生产者-消费者问题
- 问题分析

- 解决

- mutex的p操作不能放到前面,否则会造成死锁

- 实现互斥的P操作一定要放到实现同步的P操作之后
- V操作不会导致进程阻塞,因此两个V操作顺序可以互换
- 生产产品的过程和使用产品的过程,会较长,为了避免降低效率(减少上锁时间),不建议将这两个过程放到产品放入缓冲区和从缓冲区取产品的部分
- 小结

多生产者-多消费者问题
- 问题分析


- 实现
- 有mutex

- 这里可以去掉mutex,plate作为互斥信号量

- 这里可以是因为缓冲区大小为1,当然加上mutex肯定没错
- 当缓冲区大小大于1时,要加上mutex互斥信号量

- 小结


注:不要从单个进程的角度来看问题,要从事件的角度
读者写者问题
- 问题分析

- 实现

- 避免写进程饥饿

- 小结
- 遇到同步问题一般是生产者-消费者问题
- 遇到包含互斥的一般是复杂的读者-写者问题

哲学家进餐问题
- 问题分析

- 造成死锁的方法

- 解决思索的方法
- 至多允许四个哲学家拿起筷子
- 仅当一名哲学家左右两边的筷子都可以用时,才抓起筷子
- 对哲学家顺序编号,奇数号先拿左边筷子,再拿右边,偶数号先拿右边筷子再拿左边

- 小结

吸烟者问题
- 问题分析

- 实现

- 小结

x
感谢您的支持,我会继续努力的!
扫码打赏,你说多少就多少
打开微信扫一扫,即可进行扫码打赏哦