1 / 3
文档名称:

生产者消费者算法c 版.doc

格式:doc   大小:22KB   页数:3页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

生产者消费者算法c 版.doc

上传人:薇薇安 2021/9/18 文件大小:22 KB

下载得到文件列表

生产者消费者算法c 版.doc

相关文档

文档介绍

文档介绍://******************************************************************************//
//*        实验一  生产者消费者问题                           *//
//******************************************************************************//
#include <windows.h>
#include <>
#include <iostream.h>
const unsigned short SIZE_OF_BUFFER = 10; //缓冲队列长度
unsigned short ProductID = 0;    //产品号
unsigned short ConsumeID = 0; //将被消耗的产品号
unsigned short in = 0; //相当于缓冲单元指针,生产者进程每次将产品放入该指针指示的缓冲单元,并将指针后移一个缓冲单元
unsigned short out = 0;   //相当于缓冲单元指针,消费者进程每次从该指针指示的缓冲单元取出产品,并将指针后移一个缓冲单元
typedef struct BufferType{
ﻩint productID;
ﻩint state;    //0表示缓冲单元空,表示缓冲单元满(有产品)
}Buffer;
Buffer g_buffer[SIZE_OF_BUFFER];    //缓冲队列(作为循环队列使用)
bool g_continue = true;   //控制程序结束
HANDLE g_hMutex;   //线程间互斥的信号量
HANDLE g_hEmptySemaphore;    //线程间同步的信号量
HANDLE g_hFullSemaphore;    //线程间同步的信号量
DWORD WINAPI Producer(LPVOID);    //生产者线程
DWORD WINAPI Consumer(LPVOID);  //消费者线程
int main()
{
 //创建互斥的信号量和同步的信号量
g_hMutex = CreateMutex(NULL,FALSE,NULL);
  g_hEmptySemaphore = CreateSemaphore(NULL,SIZE_OF_BUFFER,SIZE_OF_BUFFER,NULL);
g_hFullSemaphore = CreateSemaphore(NULL,0,SIZE_OF_BUFFER,NULL);
 //调整下面的数值,可以发现,当生产者个数多于消费者个数时,生产速度快,生产者经常等待消费者;反之,消费者经常等待
  const unsigned short PRODUCERS_COUNT = 3;  //要创建的生产者线程的个数
const unsigned short CONSUMER