第一范文网 - 专业文章范例文档资料分享平台

缓冲池模拟与实现

来源:用户分享 时间:2025/11/16 3:24:07 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

Sleep(100);

////同步与互斥的控制

WaitForSingleObject(hsemOUTQ,INFINITE);

WaitForSingleObject(hmutexOUTQ,INFINITE);

Outputbuf = getBuf(OUTQ) ; //从输出队列中提取一个提取输出缓冲 区

cout<<\输出线程从 \缓冲单元 \提取输

出--->\

//Outputbuf->buf = -1 ; //提取完成后将该缓冲区回收

ReleaseMutex(hmutexOUTQ);

WaitForSingleObject(hmutexEMQ,INFINITE);

putBuf(EMQ,Outputbuf) ; //回收的把它挂载到空队列的队尾

ReleaseMutex(hmutexEMQ);

ReleaseSemaphore(hsemEMQ,1,NULL); }

return 0; }

//计算线程函数的实现

DWORD WINAPI CalThreadFunc(LPVOID lpPara) //计算线程函数 {

buffer* Calbuf1 = NULL;

buffer* Calbuf2 =NULL;

int nCal;

while(m_end) {

Sleep(10); //

休眠时间应很小

////同步与互斥的控制

WaitForSingleObject(hsemINQ,INFINITE);

WaitForSingleObject(hmutexINQ,INFINITE);

Calbuf1 = getBuf(INQ); //从输入队列中提取一个收容输入缓冲区

nCal = Calbuf1->buf; //提取数据

cout<<\计算线程从 \缓冲单元 \提取输入

--->\

//Calbuf->buf = -1 ; //

ReleaseMutex(hmutexINQ);

WaitForSingleObject(hmutexEMQ,INFINITE);

putBuf(EMQ,Calbuf1);

ReleaseMutex(hmutexEMQ);

ReleaseSemaphore(hsemEMQ,1,NULL);

nCal = nCal + 10000 ; //模拟输入数据的处理

WaitForSingleObject(hsemEMQ,INFINITE);

WaitForSingleObject(hmutexEMQ,INFINITE);

Calbuf2 = getBuf(EMQ); //得到一个空的缓冲区作为收容输出

Calbuf2->buf = nCal ; //存入运算结果

cout<<\计算线程从 \缓冲单元 \收容输出

--->\

ReleaseMutex(hmutexEMQ);

WaitForSingleObject(hmutexOUTQ,INFINITE); //把收容输出缓冲区挂

载到输出队列的队尾

putBuf(OUTQ,Calbuf2);

ReleaseMutex(hmutexOUTQ);

ReleaseSemaphore(hsemOUTQ,1,NULL); }

return 0 ; }

//从队列中得到队头结点函数(实际相当于删除一个结点操作)

buffer* getBuf(int type) {

buffer* Returnbuf = NULL;

switch(type) {

case 0 : {

//判断该队列的缓冲个数是否还只有一个

if(hemq != lemq && hemq->next->next != NULL) {

Returnbuf = hemq->next ; //取得队列头 hemq->next = Returnbuf->next; //修正队列链表头指针的指 向

Returnbuf->next = NULL;

return Returnbuf; } else { //

指针相等级

搜索更多关于: 缓冲池模拟与实现 的文档
缓冲池模拟与实现.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c0l85c2aakl5nd0e7mk71_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top