操作系统之生产者消费者问题代码
时间: 2023-08-06 18:16:01 浏览: 435
以下是一个简单的生产者消费者问题的代码实现,基于 Python 语言:
```python
import threading
import time
MAX_SIZE = 5 # 缓冲区最大容量
buffer = [] # 缓冲区
# 生产者线程
class Producer(threading.Thread):
def run(self):
global buffer
while True:
if len(buffer) == MAX_SIZE:
print("Buffer is full, producer is waiting")
else:
item = time.time() # 生产一个新的物品
buffer.append(item)
print("Producer produced", item)
time.sleep(1)
# 消费者线程
class Consumer(threading.Thread):
def run(self):
global buffer
while True:
if not buffer:
print("Buffer is empty, consumer is waiting")
else:
item = buffer.pop(0)
print("Consumer consumed", item)
time.sleep(1)
# 启动生产者和消费者线程
producer = Producer()
consumer = Consumer()
producer.start()
consumer.start()
```
该代码实现了一个简单的生产者消费者问题,使用了 Python 的 threading 模块实现多线程。在该实现中,生产者线程和消费者线程共享一个全局的缓冲区 buffer,生产者线程会不断地向缓冲区中添加新的物品,而消费者线程会不断地从缓冲区中取出物品进行消费。如果缓冲区已经满了,生产者线程就会等待;如果缓冲区已经空了,消费者线程就会等待。
阅读全文