2—B进程同步精选.ppt

* 如果生产者和消费者共享的缓冲池容量为可以存放n件物品(n1)。 由于缓冲器可存n件物品,因此,必须指出缓冲器中什么位置已有物品可供消费,什么位置尚无物品可供生产者存放物品。可以用输入指针in和输出指针out分别指示生产者往缓冲器存物品和消费者从缓冲器取物品的相对位置,它们的初值为0,生产者和消费者按位置的顺序去存物品和取物品,缓冲池被循环使用。 每当生产进程生产并投放一个产品后,输入指针加1,由于缓冲池循环使用,可表示为: in:=(in+1)mod n ; 每当消费者进程取走一个产品后,输出指针加1,由于缓冲池循环使用,可表示为:out:=(out+1)mod n ; * 当(in+1)mod n =out 时,表示缓冲池满; 当in = out 时 ,表示缓冲池空; 局部变量nextp:生产者用于暂时存放刚生产出的产品; 局部变量nextc:消费者暂时存放要消费的产品; * 生产者消费者问题 生产者生产的产品放入缓冲池内; 消费者从缓冲池内取走产品消费; 消费者消费后的空白缓冲区供生产者使用。 规则: 有空的buffer时生产者便可将产品送入缓冲池。 有满的buffer时消费者可从中取走产品。 消费者与生产者互斥地访问缓冲区。 * 生产者消费者算法分析 算法分析 两类进程:

文档评论(0)

1亿VIP精品文档

相关文档