我有点卡在多个消费者/生产者问题。它出现在我的讲义中,但我简直不明白为什么单一消费者/生产者方法不起作用。生产者/消费者与有界缓冲区,多个生产者/消费者与信号灯
1对消费者和生产者1的典型方法是这样的:
Producer :
while(true)
emptyBuffers.P();
mutex.P();
buffer.insert(produced item);
mutex.V();
fullBuffers.V();
Consumer :
while(true)
fullBuffers.P();
mutex.P();
buffer.consume(consumed item);
mutex.V();
emptyBuffers.V();
为什么如果我有1个生产者和/或大于1层的消费者更本不工作?我到处寻找,但我找不到我明白的答案:s。
互斥信号灯确保没有2个进程的同时缓冲区的工作,所以我不知道如何,如果你有多个进程这个属性可以改变可能...
的“解决方案'是你将互斥锁更改为ProducerMutex和ConsumerMutex。但现在这意味着生产者和消费者可以同时进入缓冲区,这不应该被允许,对吗?
我真的没有得到这个:■
这真是一个耻辱,碰巧是那位将在考试中给我评分的教授:)。尽管如此,我很高兴我没有,根据你的看法,这里错过了一些基本的方面。 Thx – bambinoh
至少现在你有几个引用引用(除了我:)) –