📄 provider.c~
字号:
#include"ipc.h"int main(int argc,char *argv[]){ int con_val=0;//可控制轮换提供材料 int rate; if(argv[1]!=NULL)rate=atoi(argv[1]); else rate=3; buff_key=101; buff_num=2; pput_key=102; pput_num=2; shm_flg=IPC_CREAT|0644; buff_ptr=(char*)set_shm(buff_key,buff_num,shm_flg); pput_ptr=(int *)set_shm(pput_key,pput_num,shm_flg); prod_key=201; pmtx_key=202; cig_key=301; pap_key=302; glu_key=303; smtx_key=304; sem_flg=IPC_CREAT|0644; sem_val=0; prod_sem=set_sem(prod_key,sem_val,sem_flg); sem_val=0; cig_sem=set_sem(cig_key,sem_val,sem_flg); pap_sem=set_sem(pap_key,sem_val,sem_flg); glu_sem=set_sem(glu_key,sem_val,sem_flg); sem_val=1; pmtx_sem=set_sem(pmtx_key,sem_val,sem_flg); while(1){ down(prod_sem); down(pmtx_sem); if(con_val%3==0){ sleep(rate); buff_ptr[*pput_ptr]='C'; *pput_ptr=(*pput_ptr+1)%buff_num; buff_ptr[*pput_ptr]='P'; printf("Provider supply PC\n"); sleep(rate); }//送CP else if(con_val%3==1){ sleep(rate); buff_ptr[*pput_ptr]='C'; *pput_ptr=(*pput_ptr+1)%buff_num; buff_ptr[*pput_ptr]='G'; printf("Provider supply GC\n"); sleep(rate); } //送CG else{ sleep(rate); buff_ptr[*pput_ptr]='P'; *pput_ptr=(*pput_ptr+1)%buff_num; buff_ptr[*pput_ptr]='G'; printf("Provider supply GP\n"); sleep(rate); } //送PG *pput_ptr=(*pput_ptr+1)%buff_num; up(pmtx_sem); if(con_val%3==0) up(glu_sem); else if(con_val%3==1) up(pap_sem); else up(cig_sem); con_val=(con_val+1)%3; } return EXIT_SUCCESS; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -