欢迎来到天天文库
浏览记录
ID:27821781
大小:260.07 KB
页数:7页
时间:2018-12-06
《读者-写者问题c源代码》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、读者一一写者问题C卄程序(原创作品)演示效果图:请输入你要创建多少个线程:f尔所要创建的第1个线程类型为:1•读者2•写者1你所要创建的第2个线程类型为:1•读者2•写者2你所要创建的第3个线程类型为:1•读者2•写者齐所要创建的第4个线程类型为:1•读者2•写者芥所要创建的第5个线程类型为:1•读者2•写者2你所要创建的第6个线程类型为:1•读者2•写者123456Ji示Un.fuk面线线线线线线下7Bs15:52:28:166>糸Is%者者者者者者读蔓读皐读笙荃荃荃荃译行在在在在在进正正正正正
2、才在时叶叶叶时一=旳
3、日Js15=52:31=182>容.以/结尾■■■■出在在在在匕L-一一nnnn0H-fp3krubrubrubrut11者者者者者者蔓读蔓写15:52:44:370>冇在在匕「进正正者者者者15:52:44:370>请Pfossanykeytocontinue王15:52:57:434>程序完整代码:^include^includettinclude#include4、ring>#include//包含清屏头文件〃全局变量intempty二1;//信号量intwrln=l;//信号量intmax;inttemp[30];intWait,*next;intcount=0;//记录已经完成操作的线程数intwaitSemapore;inttype;//类型记录intwritc=l;intreadc=l;voidreader()/////////////////////////////////////////////////////读者函数开始{e5、mpty--;//P操作改变信号量cout«ff读者获得资源SYSTEMTIMEsys;GetLocalTime(&sys);//输出系统时间cout«w系统时间:w«sys.wHour«n:w«sys.wMinute«w:ff«sys.wSecond«w:w«sys.wMilliseconds«,r)"<6、///////////////////////////读者函数结尾voidwriter()//////////////////////////////////////////////////写者函数开始empty--;//P操作改变信号量wrln―;//P操作改变信号量cout«”写者W«writc«n获得资源”«M(n;SYSTEMTIMEsys;GetLocalTime(&sys);//输出系统时间cout«w系统时间:M<7、.wSecond<<'r:°<8、ios::app);if(ioutfile){cerr«nopenfileerror!n«endl;abort();)while(ch!=,/'){cin»ch;outfile«ch;}cout«endl«w*M<<"写者w«writc«M正在进行写操作・・"«en9、dl;outfile.close();count++;〃wrIn++;//V操作改变信号量//empty++;//V操作改变信号量}//////////////////////////////////////////////////////////////写者函数结尾voidcodein()/////////////////////////////////////////////////////////////////输入界面{intru;cout«w请输入你要创建多少个线程:w«endl;cin10、»max;for(inti=0;i11、12、ru==2)temp[i]=ru;elsecout«M输入有误!请重新输入M«endl;/////////////判断错误if(i==max-l)//录入最后一个线程类型操作{//system(Hclsn);//清屏HANDLEhOut;hOut=GetStdHandle(STD_
4、ring>#include//包含清屏头文件〃全局变量intempty二1;//信号量intwrln=l;//信号量intmax;inttemp[30];intWait,*next;intcount=0;//记录已经完成操作的线程数intwaitSemapore;inttype;//类型记录intwritc=l;intreadc=l;voidreader()/////////////////////////////////////////////////////读者函数开始{e
5、mpty--;//P操作改变信号量cout«ff读者获得资源SYSTEMTIMEsys;GetLocalTime(&sys);//输出系统时间cout«w系统时间:w«sys.wHour«n:w«sys.wMinute«w:ff«sys.wSecond«w:w«sys.wMilliseconds«,r)"<6、///////////////////////////读者函数结尾voidwriter()//////////////////////////////////////////////////写者函数开始empty--;//P操作改变信号量wrln―;//P操作改变信号量cout«”写者W«writc«n获得资源”«M(n;SYSTEMTIMEsys;GetLocalTime(&sys);//输出系统时间cout«w系统时间:M<7、.wSecond<<'r:°<8、ios::app);if(ioutfile){cerr«nopenfileerror!n«endl;abort();)while(ch!=,/'){cin»ch;outfile«ch;}cout«endl«w*M<<"写者w«writc«M正在进行写操作・・"«en9、dl;outfile.close();count++;〃wrIn++;//V操作改变信号量//empty++;//V操作改变信号量}//////////////////////////////////////////////////////////////写者函数结尾voidcodein()/////////////////////////////////////////////////////////////////输入界面{intru;cout«w请输入你要创建多少个线程:w«endl;cin10、»max;for(inti=0;i11、12、ru==2)temp[i]=ru;elsecout«M输入有误!请重新输入M«endl;/////////////判断错误if(i==max-l)//录入最后一个线程类型操作{//system(Hclsn);//清屏HANDLEhOut;hOut=GetStdHandle(STD_
6、///////////////////////////读者函数结尾voidwriter()//////////////////////////////////////////////////写者函数开始empty--;//P操作改变信号量wrln―;//P操作改变信号量cout«”写者W«writc«n获得资源”«M(n;SYSTEMTIMEsys;GetLocalTime(&sys);//输出系统时间cout«w系统时间:M<7、.wSecond<<'r:°<8、ios::app);if(ioutfile){cerr«nopenfileerror!n«endl;abort();)while(ch!=,/'){cin»ch;outfile«ch;}cout«endl«w*M<<"写者w«writc«M正在进行写操作・・"«en9、dl;outfile.close();count++;〃wrIn++;//V操作改变信号量//empty++;//V操作改变信号量}//////////////////////////////////////////////////////////////写者函数结尾voidcodein()/////////////////////////////////////////////////////////////////输入界面{intru;cout«w请输入你要创建多少个线程:w«endl;cin10、»max;for(inti=0;i11、12、ru==2)temp[i]=ru;elsecout«M输入有误!请重新输入M«endl;/////////////判断错误if(i==max-l)//录入最后一个线程类型操作{//system(Hclsn);//清屏HANDLEhOut;hOut=GetStdHandle(STD_
7、.wSecond<<'r:°<8、ios::app);if(ioutfile){cerr«nopenfileerror!n«endl;abort();)while(ch!=,/'){cin»ch;outfile«ch;}cout«endl«w*M<<"写者w«writc«M正在进行写操作・・"«en9、dl;outfile.close();count++;〃wrIn++;//V操作改变信号量//empty++;//V操作改变信号量}//////////////////////////////////////////////////////////////写者函数结尾voidcodein()/////////////////////////////////////////////////////////////////输入界面{intru;cout«w请输入你要创建多少个线程:w«endl;cin10、»max;for(inti=0;i11、12、ru==2)temp[i]=ru;elsecout«M输入有误!请重新输入M«endl;/////////////判断错误if(i==max-l)//录入最后一个线程类型操作{//system(Hclsn);//清屏HANDLEhOut;hOut=GetStdHandle(STD_
8、ios::app);if(ioutfile){cerr«nopenfileerror!n«endl;abort();)while(ch!=,/'){cin»ch;outfile«ch;}cout«endl«w*M<<"写者w«writc«M正在进行写操作・・"«en
9、dl;outfile.close();count++;〃wrIn++;//V操作改变信号量//empty++;//V操作改变信号量}//////////////////////////////////////////////////////////////写者函数结尾voidcodein()/////////////////////////////////////////////////////////////////输入界面{intru;cout«w请输入你要创建多少个线程:w«endl;cin
10、»max;for(inti=0;i11、12、ru==2)temp[i]=ru;elsecout«M输入有误!请重新输入M«endl;/////////////判断错误if(i==max-l)//录入最后一个线程类型操作{//system(Hclsn);//清屏HANDLEhOut;hOut=GetStdHandle(STD_
11、
12、ru==2)temp[i]=ru;elsecout«M输入有误!请重新输入M«endl;/////////////判断错误if(i==max-l)//录入最后一个线程类型操作{//system(Hclsn);//清屏HANDLEhOut;hOut=GetStdHandle(STD_
此文档下载收益归作者所有