Concurrency 生产者/消费者问题-改变信号量顺序

Concurrency 生产者/消费者问题-改变信号量顺序,concurrency,semaphore,producer-consumer,Concurrency,Semaphore,Producer Consumer,让我们假设我有一个多生产者和单一消费者的场景。 生产者的伪代码是: product = produce() wait(empty) wait(mutex) array[in] = product in = (in + 1) % n signal(mutex) signal(full) 消费者的伪代码为: wait(full) product = array[out] out = (out + 1) % n signal(empty) useProduct() 如果在等待(满)之前交换消费者中

让我们假设我有一个多生产者和单一消费者的场景。 生产者的伪代码是:

product = produce()
wait(empty)
wait(mutex)
array[in] = product
in = (in + 1) % n
signal(mutex)
signal(full)
消费者的伪代码为:

wait(full)
product = array[out]
out = (out + 1) % n
signal(empty)
useProduct()
如果在等待(满)之前交换消费者中的信号量,即信号量(空),会发生什么情况?? 我尝试用java实现这个场景,但我看不到任何变化。

等待(完整)
是用来通知消费者有东西要消费的。如果不先发出
wait(full)
,消费者可以在生产者生产任何产品之前消费

如果您在Java中进行测试,请尝试在生产者之前启动消费者,并让生产者在生产第一项之前稍等片刻,让消费者“消费”