操作系统原理一:进程管理 (6)

操作系统原理一:进程管理

Monitor m_name{ //管程名 variable declarations; //共享变量说明 cond declarations; //条件变量说明 public: //能被进程调用的过程 void P1(…); //对数据结构的操作过程 {} void P2(…); {} ... void Pn(…); {} ... { //管程主体 //初始化代码 } } 生产者-消费者

建立管程PC,包括:

二过程:put(item)过程;get(item)过程;

一变量:count>=n时满,<=0时空

初始值:in=out=count=0

Monitor PC{ item buffer[N]; int in out; condition notfull,notempty; int count; public: void put(item x){ if(count>=N)cwait(notfull); buffer[in]=x; in=(in+1)%N; count++; csignal(notempty); } void get(item x){ if(count<=0)cwait(notempty); x=buffer[out]; out=(out+1)%N; count--; csignal(notfull); } } void producer(){ item x; while(1){ //produce PC.put(x); } } void consumer(){ item x; while(1){ PC.get(x); //consume } }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zypfsj.html