正在加载图片...
procedure entry put(var product: item) if count≥ n then notfull.wait;/*等待缓冲池不全满条件成立*/ buffer[in]: =product n:=(in+1)mod count: =count+1 notempty. signal;/*缓冲池不全空条件成立*/ procedure entry get(Var product: item) begin f count≤ Othen notempty.wait;/*等待缓冲池不全空条件成立*/ product: =buffer [out] out: =(out+1)mod n count: =count-1 notfull signal;/*缓冲池不全满条件成立*/ begil count: =0 上述管程Pc中包括两个局部过程:过程put负责将产品投放到缓冲池中;过程get负责 从缓冲池中取出产品。另外,整型变量 count表示缓冲池中己存放的产品数目,条件变量 notfull、 notempty分别对应于缓冲池不全满、缓冲池不全空两个条件 而相应的生产者和消费者可描述为: producer: begin produce an item in nextp P c put (nextp) until false end consumer: begin repeat P c get(nextc) consume the item in next until false 3.1.4进程通信 进程间的信息交换称为进程通信。进程之间的互斥与同步就是一种进程间的通信方式 由于进程互斥与同步交换的信息量较少且效率较低,因此称这两种通信方式为低级通信方式, 相应地也可将P、V操作称为两条低级通信原语。所谓高级通信方式是指进程之间以较高的效 率传送大量数据的通信方式。 1.进程通信的类型 高级通信方式可分为三大类:共享存储器系统、消息传递系统以及管道通信系统。procedure entry put(Var product:item) begin if count≥n then notfull.wait; /*等待缓冲池不全满条件成立*/ buffer[in]:=product; in:=(in+1)mod n; count:=count+1; notempty.signal; /*缓冲池不全空条件成立*/ end procedure entry get(Var product:item) begin if count≤Othen notempty.wait; /*等待缓冲池不全空条件成立*/ product:=buffer[out]; out:=(out+1)mod n; count:=count-1; notfull.signal; /*缓冲池不全满条件成立*/ end begin in:=out:=0; count:=0; end 上述管程 P_c 中包括两个局部过程:过程 put 负责将产品投放到缓冲池中;过程 get 负责 从缓冲池中取出产品。另外,整型变量 count 表示缓冲池中己存放的产品数目,条件变量 notfull、notempty 分别对应于缓冲池不全满、缓冲池不全空两个条件。 而相应的生产者和消费者可描述为: producer:begin repeat produce an item in nextp; P_c.put(nextp); until false end consumer:begin repeat P_c.get(nextc); consume the item in nextc; until false end 3.1.4 进程通信 进程间的信息交换称为进程通信。进程之间的互斥与同步就是一种进程间的通信方式。 由于进程互斥与同步交换的信息量较少且效率较低,因此称这两种通信方式为低级通信方式, 相应地也可将 P、V 操作称为两条低级通信原语。所谓高级通信方式是指进程之间以较高的效 率传送大量数据的通信方式。 1.进程通信的类型 高级通信方式可分为三大类:共享存储器系统、消息传递系统以及管道通信系统
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有