the producer-consumer problem
the bonded-buffer problem
两个进程共享一个大小为N的缓冲区----其中一个进程向里面填充数据(生产者),另外一个进程负责从里面读取数据(消费者):
问题的核心:
当缓冲区满的时候,禁止生产者继续添加数据,直到消费者 读取了部分的数据之后;
当缓冲区空的时候,消费者应该等待对方继续生产之后在执行操作。
S_emptyCount:用于生产者获得获得可用的缓冲区的额空间的大小,初始值为N
S_fillCount用于消费者获取可用的数据的大小,初始值为0;
m_mutex:用于操作缓冲区,初始值为1
对于生产者 :
Produce_item
P(S_emptyCount)
P(S_mutex)
Put+item_to_buffer
V(s_mutex)
V(S_fillCount)
对于消费者
P (S_fillCount)
P (s_mutex)
Read_item_from_buffer
V(S_mutex)
V(S_emptyCount)
Consume