百科知识

c语言程序设计报告求助,急急急实验报告必须有以下内容:1.实验内

2010-06-23 15:37:28a***
实验报告必须有以下内容: 1. 实验内容描述与需求分析 2. 概要设计(数据结构、算法设计) 3. 调试、分析与实验结果 4. 总结 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include #include <semaphore.h> #define WRITER 1 // 生产者数目 #define READER 2 // 消费者数目 #define MAXNUM 10 // 缓冲数目 int num2=1,num1=1;//读者,写者次数 pthread_mutex_t rmutex; // 读者互斥信号量, 一次只有一个线程访问缓冲 pthread_mutex_t wmutex; // 写者互斥信号量, 一次只有一个线程访问缓冲 int rcount;//现在读者数目 int r_id = 0; //读者id void *R(void *arg)//读者 { int id = ++r_id; while(num2 <= MAXNUM) { // 用sleep的数量可以调节读者和写者的速度,便于观察 sleep(2); pthread_mutex_lock(&rmutex);//开始读 if( rcount==0 ) pthread_mutex_lock(&wmutex);//判定是否在写 rcount+=1; pthread_mutex_unlock(&rmutex);//也给别读者一起读 printf("%d 号读者,开始第 %d次读书 \n", id, num2); sleep(2); pthread_mutex_lock(&rmutex);//读完 rcount-=1; if( rcount==0 ) pthread_mutex_unlock(&wmutex);//判定是否可以写 printf("%d 号读者,读完\n", id); pthread_mutex_unlock(&rmutex);//读者读完 num2+=1; } return NULL; } void *W(void *arg)//写者 { while(num1 <= MAXNUM) { // 用sleep的数量可以调节读者和写者的速度,便于观察 sleep(1); pthread_mutex_lock(&wmutex);//开始写 printf("写者第 %d次写书 \n", num1); sleep(3); pthread_mutex_unlock(&wmutex);//写完 num1+=1; } return NULL; } int max(int a, int b) { return (a>b)? a : b; } int main() { pthread_t id1[WRITER]; pthread_t id2[READER]; int i; int ret[max(READER,WRITER)];// 初始化同步信号量 // 创建N个写者线程 for(i = 0; i < WRITER; i++) { ret[i] = pthread_create(&id1[i], NULL, &W, (void *)(&i)); if(ret[i] != 0) { printf("Writer %d creation failed \n", i); exit(1); } } //创建N个读者线程 for(i = 0; i < READER; i++) { ret[i] = pthread_create(&id2[i], NULL, &R, NULL); if(ret[i] != 0) { printf("Reader %d creation failed \n", i); exit(1); } } //销毁线程 pthread_join(id1[0],NULL); pthread_join(id2[0],NULL); printf("OK,结束!\n"); exit(0); } 因为我初学这个东西,不怎么懂那位大侠指点我下,谢谢了 c语言程序设计报告求助,急急急实验报告必须有以下内容:1.实验内容描述与需求分析2.概要设计(数据结构、算法设计)3.调试、分析与实验结果4.总结#includ?

最佳回答

  • 实验包括要自己写哦 去看一下操作系统相关的书籍 上面讲进程和线程这节 有关于这个知识介绍
    2010-06-26 09:51:58
  • 很赞哦! (6)