信号量解决方案是否适用于多个生产者消费者?
Does the semaphore solution work for multiple producer consumer?
这是最大缓冲区的问题。如果缓冲区已满,生产者无法生产,如果缓冲区为空,则消费者需要等待。显然,这种使用信号量的解决方案仅适用于单个生产者和消费者。有人可以解释一下为什么它不适用于多个生产者和消费者吗?
has_space = Semaphore(max_num)
has_elements = Semaphore(0)
mutex = lock()
def producer():
has_space.acquire()
with mutex:
# add elements
has_elements.release()
def consumer():
has_elements.acquire()
with mutex:
# retrieve elements
has_space.release()
这是最大缓冲区的问题。如果缓冲区已满,生产者无法生产,如果缓冲区为空,则消费者需要等待。显然,这种使用信号量的解决方案仅适用于单个生产者和消费者。有人可以解释一下为什么它不适用于多个生产者和消费者吗?
has_space = Semaphore(max_num)
has_elements = Semaphore(0)
mutex = lock()
def producer():
has_space.acquire()
with mutex:
# add elements
has_elements.release()
def consumer():
has_elements.acquire()
with mutex:
# retrieve elements
has_space.release()