为了账号安全,请及时绑定邮箱和手机立即绑定

操作系统读者写者问题,以下代码一直说未定义

操作系统读者写者问题,以下代码一直说未定义

慕标2411347 2017-11-13 14:00:06
#include <stdio.h> #include <semaphore.h> #include <pthread.h> #include <stdlib.h> #include <sched.h> sem_t  r_w_w; sem_t  mutex; int  readCount=0; char  info[20]; int Reader(int r_n) {     char rc[20];     while(1){         sem_wait(&mutex);            readCount++;         if(readCount==1)             {                 sem_wait(&r_w_w);                 printf("First reader inter CR!\n");              }         sem_post(&mutex); printf("%dth reader is reading:",r_n);         strcpy(rc,info);         printf("%s\n",rc);     sem_wait(&mutex);      readCount--;         if(readCount==0)              sem_post(&r_w_w);         printf("%dth reader exit.\n",r_n);         sem_post(&mutex);     } } int Writer(int w_n)   {    char ws[20];       sprintf(ws,"%dth writer",w_n);       while(1){            sem_wait(&r_w_w);                strcpy(info,ws);           sem_post(&r_w_w);          } } main(){    int i,arg;    int clone_flag;    char *stack;    sem_init(&r_w_w,0,1);    sem_init(&mutex,0,1);    clone_flag=CLONE_VM|CLONE_SIGHAND |CLONE_FS|CLONE_FILES;    for(i=0;i<4;i++){        arg=i+1;        stack=(char *) malloc(4096);        clone((void *)Reader,&(stack[4096]),             clone_flag,(void *)&arg);        stack=(char *) malloc(4096);        clone((void *)Writer,&(stack[4096]),                   clone_flag,(void *)&arg);     }     exit(1); }
查看完整描述

1 回答

?
慕标2411347

TA贡献1条经验 获得超0个赞

是改成读写者同步进行

查看完整回答
反对 回复 2017-11-13
  • 1 回答
  • 0 关注
  • 1173 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信