最佳答案
#include
#include
#include
#include
#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;
//
实际的缓冲区或者临界区的数目;