关系分析
- 缓冲区应对诸进程实现互斥访问(互斥关系)
- 不允许生产者进程向满缓冲池投放数据(同步关系)
- 不允许消费者进程从空缓冲池取走数据(同步关系)
伪代码(Python描述)
def producer():
while True:
# 先申请一个空缓冲池,向里面写入数据
wait(empty)
mutex = 0
... # 临界区代码
mutex = 1
# 写入完毕,空缓冲池个数-1,即非空缓冲池个数+1
signal(full)
def consumer():
while True:
# 向非空缓冲池读数据
wait(full)
mutex = 0
... # 临界区代码
mutex = 1
# 读完数据后,空缓冲池数量+1
signal(empty)
if __name__ == '__main__':
# 实现对缓冲区的互斥访问
mutex = 1
# 空缓冲池和非空缓冲池
empty, full = n, 0