pap_smoker.c~
来自「抽烟者问题。假设一个系统中有三个抽烟者进程」· C~ 代码 · 共 59 行
C~
59 行
#include"ipc.h"int main(int argc,char *argv[]){ int rate; if(argv[1]!=NULL)rate=atoi(argv[1]); else rate=3; buff_key=101; buff_num=2; pap_get_key=104; pap_get_num=2; shm_flg=IPC_CREAT|0644; buff_ptr=(char*)set_shm(buff_key,buff_num,shm_flg); pap_get_ptr=(int *)set_shm(pap_get_key,pap_get_num,shm_flg); prod_key=201; pmtx_key=202; pap_key=302; smtx_key=304; sem_flg=IPC_CREAT|0644; sem_val=1; prod_sem=set_sem(prod_key,sem_val,sem_flg); sem_val=0; pap_sem=set_sem(pap_key,sem_val,sem_flg); sem_val=1; smtx_sem=set_sem(smtx_key,sem_val,sem_flg); while(1){ down(pap_sem); down(smtx_sem); sleep(1); printf("Pap_Smoker get %c%c\n",buff_ptr[*pap_get_ptr],buff_ptr[(*pap_get_ptr+1)%buff_num]); *pap_get_ptr=(*pap_get_ptr+2)%buff_num; up(smtx_sem); up(prod_sem); } return EXIT_SUCCESS;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?