资源简介
通过3个进程,3个缓冲队列,模拟缓冲池输入、计算、输出的过程。
代码片段和文件信息
#include
#include
#include
#include
#include
DWORD WINAPI Thread1(LPVOID lpPara); //线程1
DWORD WINAPI Thread2(LPVOID lpPara); //线程2
DWORD WINAPI Thread3(LPVOID lpPara); //线程1
HANDLE MS[3]; //互斥信号
HANDLE RS[3]; //同步信号
struct Buffer
{
int BufNo; //缓冲区号
int buf; //缓冲区内容
Buffer *next; //下一个缓冲区的指针
};
class BufferQueue //缓冲队列类
{
public:
BufferQueue();
~BufferQueue();
bool isEmpty();
void enqueue(int nint x=-1); //入队
Buffer *dequeue(); //出队
private:
Buffer *front*rear;
};
BufferQueue::BufferQueue() //构造
{
front=rear=NULL;
}
BufferQueue::~BufferQueue() //析构
{
Buffer *q=front*p;
while(q!=NULL)
{
p=q;
q=q->next;
delete p;
}
front=rear=NULL;
}
bool BufferQueue::isEmpty() //判断是否空队列
{
return front==NULL&&rear==NULL;
}
void BufferQueue::enqueue(int nint x) //入队
{
Buffer *q=new Buffer;
if(x!=-1) //插入非空缓冲区
q->buf=x;
q->BufNo=n; //缓冲区序号
if(isEmpty()) //空队列插入
front=q;
else
rear->next=q; //列尾插入
rear=q;
}
Buffer *BufferQueue::dequeue() //出队
{
Buffer *q=front;
front=front->next;
if(front==NULL) //空队列时,首尾同步
rear=NULL;
return q;
}
BufferQueue empinqoutq; //3个缓冲队列
Buffer* takeBuf(int type); //从type类型缓冲队列头取出一个缓冲区
void addBuf(int typeBuffer* buffer); //将buffer插入type类型队列尾
Buffer* getBuf(int type); //包含了同步和互斥控制的takeBuf操作
void putBuf(int type Buffer* buffer); //包含了同步和互斥控制的addBuf操作
enum type{emptyinputoutput}; //类型
int main()
{
DWORD ThreadId1 ThreadId2ThreadId3;
for(int a=0;a<20;a++) //假设20个缓冲区
emp.enqueue(a);
for(int a=0;a<3;a++) //3个互斥信号
MS[a]=CreateMutex(NULLFALSE“qemtx“);
RS[0]=CreateSemaphore(NULL2020 “esp“); //3个同步信号
RS[1]=RS[2]=CreateSemaphore(NULL020 “iosp“);
HANDLE ithread = CreateThread(NULL0Thread1NULL0&ThreadId1);
HANDLE cthread = CreateThread(NULL0Thread2NULL0&ThreadId1);
HANDLE othread =
- 上一篇:c语言编写的超级玛丽
- 下一篇:c++ 连接sql server 数据库代码
相关资源
- c++ 连接sql server 数据库代码
- c++版的连连看解释很详细
- 激光雷达数据读取、显示、分割、直
- 旅游管理系统 C++ SQL
- Exceptional C++(中文版).侯捷-侯老师的
- C++实现获取win7系统端口号IP状态和P
- C++编程规范_101条规则、准则与最佳实
- C++学校人员信息管理系统课程设计.
- 学生作业完成情况管理系统C++含报告
- mysql封装.zip
- 诊所信息管理系统.cpp
- 六子棋游戏即二打一棋C++源程序
- C++实现哈夫曼树及哈夫曼编码.rar
- C++ primer plus第五版学习笔记
- 判断一个代数系统的封闭性、结合律
- C++(CS起源GDI透视自瞄)+代码全写了
- 数据结构——迷宫问题
- C++读取csv到数组.zip
- C++四步相移求得包裹/展开相位
- [C++大学教程 C++ How to program(第九版)
- 基于QT的局域网聊天软件开发文献综述
- C++/MFC高清视频教程
- c++经典例题
- VS2010C++调用python报错无法打开包括文
- 一次性口令身份认证的设计与实现c
- 数据结构研讨代码以及ppt
- 画线算法C++的实现-鼠标交互
- n元哈夫曼编码
- C++机房收费系统
- 数据结构和算法案例-欢乐五子棋 C+
评论
共有 条评论