下载此文档

生产者与消费者算法(doc8页)优质版.docx


文档分类:行业资料 | 页数:约8页 举报非法文档有奖
1/8
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/8 下载此文档
文档列表 文档介绍
#include<>
#include<>
#include<>
#include<string> #include<> //定义一些常量; 〃本程序允许的最大临界区数; #define MAX_BUFFER_NUM 10 〃秒到微秒的乘法因子; #define INTE_PER_SEC 1000 //本程序允许的生产和消费线程的总数; #define MAX_THREAD_NUM 64 //定义一个结构,记录在测试文件中指定的每一个线程的参数 struct Threadinfo
{
int serial; //线程序列号
char entity; 〃是 P 还是 C
double delay; // 线程延迟
int thread_request[MAX_THREAD_NUM]; // 线程请求队列
int n_request; // 请求个数
};
//全局变量的定义
〃临界区对象的声明,用于管理缓冲区的互斥访问;
CRITICAL_SECTION PC_Critical[MAX_BUFFER_NUM];
int Buffer_Critical[MAX_BUFFER_NUM]; // 缓冲区声明,用于存放产品;
HANDLE h_Thread[MAX_THREAD_NUM]; //用于存储每个线程句柄的数组; Threadinfo Thread_Info[MAX_THREAD_NUM]; // 线程信息数组; HANDLE empty_semaphore; 〃一个信号量;
HANDLE h_mutex; // 一个互斥量;
DWORD n_Thread = 0; 〃实际的线程的数目;
DWORD n_Buffer_or_Critical; 〃实际的缓冲区或者临界区的数目;
HANDLE h_Semaphore[MAX_THREAD_NUM]; 〃生产者允许消费者开始消费的信号量;
//生产消费及辅助函数的声明
void Produce(void *p);
void Consume(void *p);
bool IflnOtherRequest(int);
int FindProducePositon();
int FindBufferPosition(int);
int main(void) {
//声明所需变量;
DWORD wait_for_all; ifstream inFile;
//初始化缓冲区;
for(int i=0;i< MAX_BUFFER_NUM;i++) Buffer_Critical[i] = -1;
//初始化每个线程的请求队列;
for(int j=0;j<MAX_THREAD_NUM;j++){
for(int k=0;k<MAX_THREAD_NUM;k++) Thread_Info[j].thread_request[k] = -1;
Thread_Info[j].n_request = 0;
}
//初始化临界区;
for(i =0;i< MAX_BUFFER_NUM;i++) InitializeCriticalSection(&PC_Critical[i]);
〃打

生产者与消费者算法(doc8页)优质版 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数8
  • 收藏数0 收藏
  • 顶次数0
  • 上传人cjc201601
  • 文件大小18 KB
  • 时间2021-07-29
最近更新