读者-写者问题C源代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

读者——写者问题C++程序

(原创作品)

演示效果图:

程序完整代码:

#include

#include

#include

#include

#include

#include//包含清屏头文件//全局变量

int empty=1;//信号量

int wrIn=1;//信号量

int max;

int temp[30];

int *wait,*next;

int count=0;//记录已经完成操作的线程数

int waitSemapore;

int type;//类型记录

int writc=1;

int readc=1;

void reader()/////////////////////////////////////////////////////读者函数开始

{

empty--;//P操作改变信号量

cout<<"读者获得资源"<<"(";

SYSTEMTIME sys;

GetLocalTime(&sys);//输出系统时间

cout<<"系统时间:"<

cout<

//empty++;//信号量

count++;

}/////////////////////////////////////////////////////////读者函数结尾

void writer()//////////////////////////////////////////////////写者函数开始

{

empty--;//P操作改变信号量

wrIn--;//P操作改变信号量

cout << " 写者"<

SYSTEMTIME sys;

GetLocalTime(&sys);//输出系统时间

cout<<"系统时间:"<

cout<<"请输入线程要写入的内容,以/结尾"<

char ch='a';

ofstream outfile("f.txt",ios::out|ios::app);

if(!outfile)

{

cerr<<"open file error!"<

abort();

}

while(ch!='/')

{ cin>>ch;

outfile<

}

cout<

outfile.close();

count++;

//wrIn++;//V操作改变信号量

//empty++;//V操作改变信号量

}//////////////////////////////////////////////////////////////写者函数结尾

void codeIn()/////////////////////////////////////////////////////////////////输入界面{

int ru;

cout<<"请输入你要创建多少个线程:"<

cin>>max;

for(int i=0;i

{

cout<<"你所要创建的第"<>ru;///////////////

if(ru==1||ru==2)

temp[i]=ru;

else

cout<<"输入有误!请重新输入"<

if(i==max-1)//录入最后一个线程类型操作

{

//system("cls");//清屏

HANDLE hOut;

hOut = GetStdHandle(STD_OUTPUT_HANDLE); //设置输出字体颜色red SetConsoleTextAttribute(hOut,

FOREGROUND_RED |

FOREGROUND_INTENSITY);

cout<

hOut = GetStdHandle(STD_OUTPUT_HANDLE); //设置输出字体背景SetConsoleTextAttribute(hOut,

BACKGROUND_GREEN |

BACKGROUND_INTENSITY); for(int j=0;j

{cout<<"线程"<

if(temp[j]==1)cout<<"读者"<

else cout<<"写者"<

}///////////////////////////////输出录入结果

cout<<"下面将进行动态演示:"<

system("pause");

cout<

}//录入最后一个线程类型操作

}//录入界面结束}

}/////////////////////////////////////////////////////////codeIn()

int main()/////////////////////////////////////////////////主函数

{

codeIn();//录入界面

wait=&temp[0];

while(wait<&temp[max]&&count

{

相关文档
最新文档