具有双队列的消费者制作人

时间:2012-09-01 10:54:44

标签: buffer swap producer-consumer

Hello =)我正在尝试为下面的问题提出一个伪代码,但是我对信号量的同步有点困惑,所以我希望有人可以帮忙!

我们有M个消费者和M个生产者以及2个相同N大小的缓冲区。消费者从一个缓冲区消费,生产者在另一个缓冲区上消费。当消费者缓冲区为空并且生产者缓冲区已满时,缓冲区交换并继续进程。

有关如何使用信号量同步这些进程的任何想法?谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用2个信号量:一个用于生成器缓冲区,一个用于使用者缓冲区。生产者在每次写入操作时都被锁定,消费者在每次读取操作时都被锁定。切换需要锁定两个缓冲区。

顺便说一下,如果生产者缓冲区已满并且消费者缓冲区为空,会发生什么?