云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 大工18春《操作系统》大作业题目及要求答案

大工18春《操作系统》大作业题目及要求答案

  • 62 次阅读
  • 3 次下载
  • 2025/5/2 11:07:19

3.3模块说明:

const unsigned short SIZE_OF_BUFFER = 10; //缓冲区长度

unsigned short ProductID = 0; //产品号 unsigned short ConsumeID = 0; //将被消耗的产品号

unsigned short in = 0; //产品进缓冲区时的缓冲区下标

unsigned short out = 0; //产品出缓冲区时的

缓冲区下标

int g_buffer[SIZE_OF_BUFFER]; //缓冲区是个循环队列 bool g_continue = true; //控制程序结束 HANDLE g_hMutex; //用于线程间的互斥 HANDLE g_hFullSemaphore; //当缓冲区满时迫使生产者等待

HANDLE g_hEmptySemaphore; //当缓冲区空时迫使消费者等待

DWORD WINAPI Producer(LPVOID); //生产者线程 DWORD WINAPI Consumer(LPVOID); //消费者线程

3.4源程序

#include #include

const unsigned short SIZE_OF_BUFFER = 20;//有界缓冲区长度 int g_buffer[SIZE_OF_BUFFER];//开辟缓冲区,用数组表示,可以看成是一个循环队列

unsigned short ProductID = 0;//新生产出来的产品的产品号 unsigned short ConsumeID = 0;//被消耗的产品的产品号

unsigned short in = 0;//产品进缓冲区时的缓冲区下标,用于记录生产者的指针位置

unsigned short out = 0;//产品出缓冲区时的缓冲区下标,用于记录消费者的指针位置

bool g_continue = 1;//控制程序运行:1表示继续运行,0表示停止运行

HANDLE g_hMutex;//线程间的互斥信号量

HANDLE g_hFullSemaphore;//资源信号量:缓冲区满 HANDLE g_hEmptySemaphore;//资源信号量:缓冲区空 DWORD WINAPI Producer(LPVOID);//生产者线程 DWORD WINAPI Consumer(LPVOID);//消费者线程

const unsigned short PRODUCERS_COUNT=4;//生产者的个数 const unsigned short CONSUMERS_COUNT=3;//消费者的个数 const

unsigned

short

THREADS_COUNT=PRODUCERS_COUNT+CONSUMERS_COUNT;//总线程数

HANDLE hThreads[PRODUCERS_COUNT];//各线程的handle DWORD producerID[CONSUMERS_COUNT];//生产者线程的标识符 DWORD consumerID[THREADS_COUNT];//消费者线程的标识符

/*----------------------------------------------------------*/

//生产一个产品,输出其ID号 void Produce() { }

/*----------------------------------------------------------*/

/*----------------------把新生产的产品放入缓冲区开始------------------------*/

//把新生产的产品放入缓冲区 void Append()

std::cout<

std::cerr<<\生产一个产品: \std::cout<

{

std::cerr<<\把生产的产品送入缓冲区\g_buffer[in]=ProductID; in=(in+1)%SIZE_OF_BUFFER; std::cerr<

std::cout<<\缓冲区 产品 生产者/消费者\

//新产品放入缓冲区后,输出缓冲区当前的状态

for(int i=0;i

//输出缓冲区下标 if (i<10)

std::cout<

else

std::cout<

if(i==in) { }

if(i==out) {

if(g_buffer[i]<10)

std::cout<<\if(g_buffer[i]<10)

std::cout<<\

else

std::cout<<\

std::cout<<\生产者\输出生产者的指针位置

else

std::cout<<\

std::cout<<\消费者\输出消费者的指针位置

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

3.3模块说明: const unsigned short SIZE_OF_BUFFER = 10; //缓冲区长度 unsigned short ProductID = 0; //产品号 unsigned short ConsumeID = 0; //将被消耗的产品号 unsigned short in = 0; //产品进缓冲区时的缓冲区下标 unsigned short out = 0; //产品出缓冲区时的 缓冲区下标

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com