进程通信 生产者-消费者问题?
智能高科 2009-03-29 09:16:11 生产者代码:
While (Count= =Buffer_SIZE)
++Count; //增加一项至缓冲区
Buffer[in]=item;
in=(in++)%Buffer_SIZE);
消费者代码:
While(count= =0)
--Count; //从缓冲区减去一项
item=Buffer[out];
out=(out+1)%Buffer_SIZE;
其中指针in来指示下一个可存放消息的缓冲区,每存放一个消息,in+1。
指针out来指示下一个可获得消息的缓冲区,每当取走一个消息后,输出指针out+1。
由于缓冲池是循环缓冲,因此输入指针in=(in++)%Buffer_SRE,输出指针out=(out++)%Buffer_SRE。