⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄

📁 这个程序是操作系统中的 生产者与消费者的 模拟程序
💻
字号:
#include "windows.h" 
#include "conio.h" 
#include "stdio.h" 

#define MAX 20 //定义缓冲池的最大容量是20 

int count=5; //初始产品的数量为5 

void Proclucer()//生产者函数 
{ 
while(1) 
{ 
if(count >= MAX) 
{ 
printf("缓冲池已满!等待 1 秒!\n"); 
Sleep(4000); 
} 
else 
{ 
count++; 
printf("生产了一个产品!当前产品的数量是: %d \n\n",count); 
Sleep(1800); //注意毫秒为单位 
} 
} 
} 

void Consumer() //消费者函数 
{ 
while(1) 
{ 
if(count == 0) 
{ 
printf("缓冲池已空!等待 2 秒!\n"); 
Sleep(3000); 
} 
else 
{ 
count--; 
printf("取出了一个产品!当前产品的数量是: %d \n\n",count); 
Sleep(1000); 
} 
} 
} 

int tStop() //停止函数 
{ 
getch(); //如果按回车的话,有时候要按两次才可以停止,我还没有解决这个问题 
return 11; //但是按其他按键就会立即停止的了 呵呵! 
} 

void Start() //开始函数 
{ 
int m; 
HANDLE ahThread=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)Proclucer,NULL,0,NULL); 
HANDLE bhThread=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)Consumer,NULL,0,NULL); 
HANDLE hThread=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)tStop,NULL,0,NULL); //多线程 
m=tStop(); 
if(m==11) //满足停止条件 
{ 
CloseHandle(ahThread); 
CloseHandle(ahThread); 
CloseHandle(hThread); 
printf("\nClose Thread Success!\n"); //停止成功 
} 
} 

void main() //主函数 
{ 
Start(); //开始 
printf("\n"); 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -