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

#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);
}

慕标2411347
浏览 1174回答 1
1回答

慕标2411347

是改成读写者同步进行
打开App,查看更多内容
随时随地看视频慕课网APP