欢迎来到天天文库
浏览记录
ID:55533392
大小:78.50 KB
页数:9页
时间:2020-05-16
《生产者消费问题.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、生产者消费者问题算法调用CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE,0,sizeof(MAKEBUFFER),"MyBuffer")函数,创建一个名为MyBuffer的文件映射。生产者:调用hMemShare=OpenFileMapping(FILE_MAP_WRITE,FALSE,"MyBuffer")函数,打开该映射,调用lpbuffer=(MAKEBUFFER*)MapViewOfFile(hMemShare,FILE_MAP_WRITE,0,0,sizeof(MAKEBUFFER
2、))连接映射。如果有空闲,则开始写数据,没用空闲则循环等待,直到用空闲后,开始写数据。消费者:打开并连接映射后,如果有数据,则显示数据,并清除该数据,如果没有,则循环等待,直到有数据写入后,显示该数据,然后清除数据。函数说明创建映射(MakeBuffer)#include#include"iostream.h"#include"stdio.h"//定义BUFFER类classMAKEBUFFER{public:intbuffer[3];};voidmain(){//创建缓冲区if(CreateFileMapping((HANDLE)0
3、xFFFFFFFF,NULL,PAGE_READWRITE,0,sizeof(MAKEBUFFER),"MyBuffer")==NULL){cout<<"FailedtoAlloocate"<#include"iostream.h"#include"stdio.h"//定义BUFFER类classMAKEBUFFER{
4、public:intbuffer[3];};voidmain(){HANDLEhMemShare;MAKEBUFFER*lpbuffer;SYSTEMTIMEtim;inti;//打开映射hMemShare=OpenFileMapping(FILE_MAP_WRITE,FALSE,"MyBuffer");if(hMemShare==NULL)cout<<"ThereisnoBUFFER!"<5、MAKEBUFFER));if(lpbuffer==NULL){cout<<"FailedtoMap"<buffer[i]==0)break;}//如果没有空闲的位置if(i==3){cout<<"Thereisnoroomforthisprocess!Waitforroom!"<buffer[i]==0)//有空闲位置,记下空闲位置,跳出循环br6、eak;}lpbuffer->buffer[i]=1;//占用该位置,将其置1GetSystemTime(&tim);//获取当前系统时间cout<<"Theprocesshaswrittenintobufferat"<buffer[j]==1)k--;}cout<<"Thereis"<7、t"<buffer[i]=1;//占用当前位置,将其置1GetSystemTime(&tim);//获取当前系统时间cout<<"Theprocesshaswrittenintobufferat"<buffer[j]==1)k--;}cout<<"The8、reis"<
5、MAKEBUFFER));if(lpbuffer==NULL){cout<<"FailedtoMap"<buffer[i]==0)break;}//如果没有空闲的位置if(i==3){cout<<"Thereisnoroomforthisprocess!Waitforroom!"<buffer[i]==0)//有空闲位置,记下空闲位置,跳出循环br
6、eak;}lpbuffer->buffer[i]=1;//占用该位置,将其置1GetSystemTime(&tim);//获取当前系统时间cout<<"Theprocesshaswrittenintobufferat"<buffer[j]==1)k--;}cout<<"Thereis"<7、t"<buffer[i]=1;//占用当前位置,将其置1GetSystemTime(&tim);//获取当前系统时间cout<<"Theprocesshaswrittenintobufferat"<buffer[j]==1)k--;}cout<<"The8、reis"<
7、t"<buffer[i]=1;//占用当前位置,将其置1GetSystemTime(&tim);//获取当前系统时间cout<<"Theprocesshaswrittenintobufferat"<buffer[j]==1)k--;}cout<<"The
8、reis"<
此文档下载收益归作者所有