ImageVerifierCode 换一换
格式:DOCX , 页数:7 ,大小:36.10KB ,
资源ID:10172778      下载积分:6 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/10172778.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请。


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(操作系统生产者消费者问题C语言.docx)为本站上传会员【精****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

操作系统生产者消费者问题C语言.docx

1、《操作系统概念》第七版中的实验项目:生产者消费者问题。本程序中,main()函数需要 三个参数:主线程休眠时间;生产者线程数;消费者线程数。各线程的休眠等待时间是随机 的。 程序代码: #include〈 stdio h> # include #include〈windows.h> #define BUFFER_SIZE 5 typedef int buffer_;item struct v { int ;i ); buffer_item buffer[BUFFER_SIZE+1 buffer_item fron

2、t=0,re;ar=0 HANDLE mutex , empty,full; int insert_i(ebuffer_item item) { /*insert item into buffer return 0 if successful,otherwise return-1 indicating an error cond/tion if((rear+1弘(BUFFER_SIZE+1)==front ) return 1; buffer[rear=item rear=(rear+1)%(BUFFER_SIZE+1); return 0; } int remove

3、item(buffer_item *item) { /*remove an object from buffer placing it in item return 0 if successful,otherwise reutrn-1 indication an error condition */ if(front == r)ear return ;1 * item=buffef front]; front=(front+) % (BUFFER_SIZE+1); return 0; DWORD WINAPI producer (PVOID Param ) { int

4、 randl struct v data=*(struct) Waram; srand((unsigned)time 0)); while (1 { Sleep(rand()%101*10 WaitForSingleObjectempty, INFINITE ); WaitForSingleObject(mutexINFINITE ); rand1 =ran(); printf "producer has producerd %d Byn%drand1 data i); if( insert_itemrand1)) printf("insert data n’rrb;r!

5、\ ReleaseMutex(mutex) ReleaseSemaphore(full, NULL); } } DWORD WINAPI consumer(PVOID Param ) { int rand1; struct v dat

6、em &rand1 )) printf("remove data err\f,); else printf "consumer consumed^ d By % d \nn,rand1,d

7、read,sargv[3] (sleep ti)e*/ /* Initialize buffer int sleeptime,pnun$num; int *ThreadIdP*ThreadIdS,i; struct * countp* counts; HANDLE *ThreadHandleP,*ThreadHandleS; sleeptime=atoi(argv)[[] pnum=atoi ( argv [2]); snum=atoi ( argv [3]); /*srand( time (NULL)); sleeptime=9;0 pnum=3; snum=3 ;*/ ThreadHan

8、dleP= ( HANDLE * ) malloc(pnum * sizeof(HANDLE)); ThreadHandleS= ( HANDLE *) malloc ( snum * sizeof(HANDLE )); ThreadIdP= ( int * )mallOpnum * sizeof in)); ThreadIdS=(int* ) malloc ( pnum * sizeoff int)); mutex=CreateMutex (NULL,FALSE,NULL ); empty=CreateSemaphore(NULL,BUFFER_SIZE,BUFFER_SIZE , NUL

9、L ); full=CreateSemaphore(NULL 0,BUFFER_SIZE+1,NULL); /*Create producer thread(s) countp=(struct v)malloc((pnum+1)*sizeof(struqt v)) counts=(struct v *)malloc((sn)um*+1sizeo(f struct))v ; for(i=0 i

10、adIdP[i;]) } /* Create consumer thread(s)*/ for( i=0; i〈 snum;i++) { counts[i+1]。i=i+1; ThreadHandleS[i]=CreateThreaNULL , 0, consumer,&count[ i+1 ],0,&ThreadIdS [i]) } /*Sleep*/ Sleep(sleepti)m;e /*Exi*t / return 0; # include "stdafx.h" #include〈 stdio。h〉 #include〈 stdlib.h> # include〈 ti

11、me。h> #include #define BUFFER-SIZE 5 typedef int buffer-item; struct v { int i; ); buffer-item buffer [BUFFER-SIZE+1]; buffer-item front=0, rear=0; HANDLE mutex, empty,full; int insert-item(buffer-item item) ( /*insert item into buffer return 0 if successful,otherwise return

12、 -1 indicating an error condition* / if ((rear+1)% (BUFFER-SIZE + 1 ) ==front) return 1; buffer [ rear ] =item; rear=(rear+1)%(BUFFER-SIZE+1); return 0; } int remove-item(buffer-item *item) { /*remove an object from buffer placing it in item return 0 if successful, otherwise reutrn -1 in

13、dication an error condition */ if(front == rear) return 1; *item=buffer[front]; front= ( front+1) % (BUFFER-SIZE+1); return 0; ) DWORD WINAPI producer (PVOID Param) { int randl; struct v data=* ( struct v *)Param; srand (( unsigned) time (0 )); while ( 1) { Sleep ( rand () %101 * 10);

14、WaitForSingleObject (empty,INFINITE); WaitForSingleObject ( mutex, INFINITE); rand1 =rand (); printf ("producer has producerd %d By %d\n”,rand1,data.i); if(insert_item(rand1)) printf ("insert data error!\n"); ReleaseMutex (mutex); ReleaseSemaphore (full, 1, NULL ); } ) DWORD WINAPI consume

15、r (PVOID Param) ( int rand1; struct v data= * (struct v * ) Param; srand((unsigned)time(0)); while (1) { Sleep(rand()%101*10); WaitForSingleObject (full,INFINITE); WaitForSingleObject ( mutex, INFINITE ); if(remove_item(&rand1)) printf("remove data error! \n"); else printf ( "consumer c

16、onsumed %d By % d \n", rand1, data。i); ReleaseMutex(mutex); ReleaseSemaphore(empty,1,NULL); ) } int main (int argc, char * argv []) ( / * Get command line arguments argv[1] ) (the number of producer threads ) , argv[2 ] (the number of consumer threads ) ,argv[3] ( sleep time )* / / * Initial

17、ize buffer * / int sleeptime, pnum, snum; DWORD *ThreadIdP,*ThreadIdS,i; struct v *countp,*counts; HANDLE *ThreadHandleP, * ThreadHandleS; /*sleeptime=atoi ( argv[1]); pnum=atoi ( argv[2]); snum=atoi (argv[3]); */ //srand(time ( NULL)); sleeptime=90; pnum=3; snum=3; ThreadHandleP=(HANDLE * ) mal

18、loc (pnum * sizeof(HANDLE)); ThreadHandleS= ( HANDLE * ) malloc (snum * sizeof ( HANDLE )); ThreadIdP=(DWORD * )malloc (pnum * sizeof(DWORD)); ThreadIdS=(DWORD * )malloc ( pnum * sizeof ( DWORD )); mutex=CreateMutex(NULL, FALSE, NULL); empty=CreateSemaphore (NULL,BUFFER_SIZE, BUFFER_SIZE, NULL); ful

19、l=CreateSemaphore (NULL, 0, BUFFER_SIZE+1,NULL); /*Create producer thread(s)*/ countp= ( struct v *) malloc((pnum+1 ) *sizeof (struct v)); counts=(struct v *)malloc ( ( snum+1)*sizeof ( struct v)); for ( i=0; i

20、countp [i+1 ] ,0,&ThreadIdP[i]); ) / * Create consumer thread(s)*/ for ( i=0; i〈 snum; i++) { counts [ i+1]. i=i+1; ThreadHandleS [ i ] =CreateThread ( NULL,0, consumer, &counts [i+1], 0,&ThreadIdS [i]); ) /*Sleep*/ Sleep (sleeptime); /*Exit*/ return 0; consitmep conBunecl 32240 By 2 pi'o

21、clucep has prortucei'rt 12873 By 3 consnmcr consuniccl 31438 By 1 vi'Qducep Jias pro clue e pel 17194 By 2 tii'aduGer 如占 produtci&i'd 751 1 comsumeii:' consumed 12229 By 3 licet' has prodiicei^a 11032 By 2 consuinep cnmsuined 23121 "By 1 pi'Qducep has pro luce pi 144L7 By 1 consitmei' consumed 128

22、73 Ely 2 pi'Qclucer has prortucei'rt 18^?? By 3 con a line i* conBumecl 17154 By 1 consumer consumed 751 By 3 consiLmer consumcdl 110B2 "By 1 vi'Qducer las producerd 28138 By 3 tit'aducer has pruduciGt'd 8726 Ey 2 consumer consumed 14417 By 2 kiraiilucef has proflucei^a 6241 Ey 1 板rodiwe略 has: ppoduceFdl. 22192 By 2 consumer consumed 189?? By 1 pi'Ddiicei' has ppodmcei'cl 17198 By 1 Press any hey to continue

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服