#include#definebuffersize5//5個緩沖區(qū)intprocessnum=0;//初始化產品數量structpcb//定義進程控制塊PCB{intflag;intnu">
高響應比算法.docx

高響應比算法.docx

ID:53119264

大?。?3.90 KB

頁數:9頁

時間:2020-04-01

高響應比算法.docx_第1頁
高響應比算法.docx_第2頁
高響應比算法.docx_第3頁
高響應比算法.docx_第4頁
高響應比算法.docx_第5頁
資源描述:

《高響應比算法.docx》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫

1、#include#include#definebuffersize5//5個緩沖區(qū)intprocessnum=0;//初始化產品數量structpcb//定義進程控制塊PCB{intflag;intnumlabel;charproduct;charstate;structpcb*processlink;}*exe=NULL,*over=NULL;typedefstructpcbPCB;PCB*readyhead=NULL,*readytail=NULL;PCB*consu

2、merhead=NULL,*consumertail=NULL;PCB*producerhead=NULL,*producertail=NULL;intproductnum=0;//產品數量intfull=0,empty=buffersize;//信號量charbuffer[buffersize];//緩沖區(qū)intbufferpoint=0;//緩沖區(qū)指針voidlinklist(PCB*p,PCB*listhead){//創(chuàng)建就緒隊列PCB*cursor=listhead;while(cursor->pro

3、cesslink!=NULL){cursor=cursor->processlink;}cursor->processlink=p;}voidfreelink(PCB*linkhead){PCB*p;while(linkhead!=NULL){p=linkhead;linkhead=linkhead->processlink;free(p);}}voidlinkqueue(PCB*process,PCB**tail)//初始化隊列{if((*tail)!=NULL){(*tail)->processlink=

4、process;(*tail)=process;}else{printf("隊列序列化!");}}PCB*getq(PCB*head,PCB**tail){PCB*p;p=head->processlink;if(p!=NULL){head->processlink=p->processlink;p->processlink=NULL;if(head->processlink==NULL)(*tail)=head;}elsereturnNULL;returnp;}boolprocessproc()//初始化進

5、程{inti,f,num;charch;PCB*p=NULL;PCB**p1=NULL;printf("請輸入希望產生的進程個數:");scanf("%d",&num);getchar();for(i=0;ifla

6、g=f;processnum++;p->numlabel=processnum;p->state='w';p->processlink=NULL;if(p->flag==1){printf("您要產生的進程是生產者,它是第%d個進程。請您輸入您要該進程產生的字符:",processnum);scanf("%c",&ch);getchar();p->product=ch;productnum++;printf("您要該進程產生的字符是%c",p->product);}else{printf("您要生產的

7、進程是消費者,它是第%d個進程。",p->numlabel);}linkqueue(p,&readytail);}returntrue;}boolhasElement(PCB*pro)//判斷隊列中是否有進程存在{if(pro->processlink==NULL)returnfalse;elsereturntrue;}boolwaitempty()//判斷生產者等待隊列是否為空{if(empty<=0){printf("進程%d:緩存區(qū)存數,緩存區(qū)滿,該進程進入生產者等待序列",exe->numla

8、bel);linkqueue(exe,&producertail);returnfalse;}else{empty--;returntrue;}}voidsignalempty()//喚醒生產者進程{PCB*p;if(hasElement(producerhead)){p=getq(producerhead,&producertail);linkqueue(p,&readytail);printf(

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內容,確認文檔內容符合您的需求后進行下載,若出現(xiàn)內容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。