algorithm - 带sempahores的生产者消费者

  显示原文与译文双语对照的内容

来自维基百科 Producer-consumer问题:


semaphore mutex = 1
semaphore fillCount = 0
semaphore emptyCount = BUFFER_SIZE

procedure producer() {
 while (true) {
 item = produceItem()
 down(emptyCount)
 down(mutex)
 putItemIntoBuffer(item)
 up(mutex)
 up(fillCount)
 }
 up(fillCount)//the consumer may not finish before the producer.
}

procedure consumer() {
 while (true) {
 down(fillCount)
 down(mutex)
 item = removeItemFromBuffer()
 up(mutex)
 up(emptyCount)
 consumeItem(item)
 }
}

我的问题是为什么制片人 up(fillCount)//the consumer may not finish before the producer 在while循环。之后,程序什么时候到达那里,为什么需要它?

时间: 原作者:

我认为代码在这种情况下没有意义。 循环从不结束,因此无法到达所涉及的行。

最初的代码没有包含这条线,它是由一个匿名添加编辑 2009年03月我现在删除了那条线。

通常,维基百科上的代码经常由许多人在长时间内进行编辑,因此引入 Bug 将它的引入。

原作者:
...