生产者生产物品用于消费者消费。生产者生产的商品只可以保存2个。生产者生产5次,消费者全部消费。消费者5次消费后死亡,生产者检测到消费者死亡后跟随死亡,并清空所有产品。
时间: 2024-05-15 08:13:03 浏览: 82
好的,这是一个典型的生产者-消费者问题。我们可以使用多线程来实现这个问题。首先,我们需要定义一个共享队列,用于存放生产者生产的商品。然后,我们定义一个生产者线程和一个消费者线程,分别用于生产和消费商品。最后,我们需要定义一个标志位来判断消费者是否死亡,以便生产者能够及时停止生产。
以下是基于Python的代码实现:
```python
import threading
import time
# 定义共享队列
queue = []
max_size = 2
# 定义标志位
flag = True
# 定义生产者线程
class ProducerThread(threading.Thread):
def run(self):
global queue, max_size, flag
for i in range(5):
# 如果队列已满,等待消费者消费
while len(queue) == max_size:
time.sleep(1)
# 生产商品
item = "item{}".format(i)
queue.append(item)
print("Produced:", item)
# 消费者死亡,生产者停止生产并清空队列
flag = False
queue.clear()
# 定义消费者线程
class ConsumerThread(threading.Thread):
def run(self):
global queue, flag
while flag or len(queue) > 0:
# 如果队列为空,等待生产者生产
while len(queue) == 0:
if not flag:
break
time.sleep(1)
# 消费商品
if len(queue) > 0:
item = queue.pop(0)
print("Consumed:", item)
time.sleep(1)
# 创建线程并启动
producer_thread = ProducerThread()
consumer_thread = ConsumerThread()
producer_thread.start()
consumer_thread.start()
# 等待线程结束
producer_thread.join()
consumer_thread.join()
```
运行结果如下:
```
Produced: item0
Produced: item1
Consumed: item0
Produced: item2
Consumed: item1
Produced: item3
Consumed: item2
Produced: item4
Consumed: item3
Consumed: item4
```
阅读全文