#include#"> #include#" />
c语言实现多个生产者和消费者.doc

c语言实现多个生产者和消费者.doc

ID:51687352

大小:41.95 KB

页数:7页

时间:2020-03-15

c语言实现多个生产者和消费者.doc_第1页
c语言实现多个生产者和消费者.doc_第2页
c语言实现多个生产者和消费者.doc_第3页
c语言实现多个生产者和消费者.doc_第4页
c语言实现多个生产者和消费者.doc_第5页
资源描述:

《c语言实现多个生产者和消费者.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、操作系统的一个经典问题是"生产者-消费者"问题,这涉及同步信号量和互斥信号量的应用,在这里,我用线程的同步和互斥来实现./**author张文*2008/06/20*/#include#include#include#include#include#defineN2   //消费者或者生产者的数目#defineM10 //缓冲数目intin=0;   //生产者放置产品的位置intout=0; //消费者取产品的位置intbuff[M]={0}; //缓冲初始化为0,开始时没有产

2、品sem_tempty_sem; //同步信号量,当满了时阻止生产者放产品sem_tfull_sem;   //同步信号量,当没产品时阻止消费者消费pthread_mutex_tmutex; //互斥信号量,一次只有一个线程访问缓冲intproduct_id=0;   //生产者idintprochase_id=0; //消费者id/*打印缓冲情况*/voidprint(){inti;for(i=0;i

3、e(1){  //用sleep的数量可以调节生产和消费的速度,便于观察  sleep(1);  //sleep(1);    sem_wait(&empty_sem);  pthread_mutex_lock(&mutex);    in=in%M;  printf("product%din%d.like:t",id,in);    buff[in]=1;    print();    ++in;    pthread_mutex_unlock(&mutex);  sem_post(&full_sem);  }}/*消费者方法*/void*prochase(){intid=++pr

4、ochase_id;while(1){  //用sleep的数量可以调节生产和消费的速度,便于观察  sleep(1);//sleep(1);    sem_wait(&full_sem);  pthread_mutex_lock(&mutex);    out=out%M;  printf("prochase%din%d.like:t",id,out);    buff[out]=0;  print();  ++out;    pthread_mutex_unlock(&mutex);  sem_post(&empty_sem);}}intmain(){pthread_tid1[

5、N];pthread_tid2[N];inti;intret[N];//初始化同步信号量intini1=sem_init(&empty_sem,0,M); intini2=sem_init(&full_sem,0,0);  if(ini1&&ini2!=0){  printf("seminitfailed");  exit(1);} //初始化互斥信号量 intini3=pthread_mutex_init(&mutex,NULL);if(ini3!=0){  printf("mutexinitfailed");  exit(1);} //创建N个生产者线程for(i=0;i

6、

7、//销毁线程for(i=0;i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。