编程实现生产者消费者问题
时间: 2024-02-26 13:58:51 浏览: 18
好的,下面是一个简单的生产者消费者问题的实现,使用 Python 语言:
```python
import threading
import queue
import time
# 初始化队列和锁
q = queue.Queue(maxsize=10)
lock = threading.Lock()
# 生产者函数
def producer():
while True:
# 获取锁
lock.acquire()
# 判断队列是否已满,如果已满则等待
while q.full():
lock.release()
time.sleep(1)
lock.acquire()
# 向队列中添加元素
item = time.time()
q.put(item)
print(f"Producer put item {item} into the queue.")
lock.release()
time.sleep(1)
# 消费者函数
def consumer():
while True:
# 获取锁
lock.acquire()
# 判断队列是否为空,如果为空则等待
while q.empty():
lock.release()
time.sleep(1)
lock.acquire()
# 从队列中取出元素
item = q.get()
print(f"Consumer get item {item} from the queue.")
lock.release()
time.sleep(1)
# 创建并启动生产者和消费者线程
t1 = threading.Thread(target=producer)
t2 = threading.Thread(target=consumer)
t1.start()
t2.start()
```
这个程序中使用了 Python 的 threading 模块和 queue 模块来实现生产者消费者问题。队列的大小为 10,生产者和消费者每隔 1 秒向队列中添加或取出一个元素。程序中还使用了锁来保证线程安全。