#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#include <Windows.h>
#include <iostream>
#include <queue>
using namespace std;
DWORD WINAPI Fun1(LPVOID lpParameter);
DWORD WINAPI Fun2(LPVOID lpParameter);
DWORD WINAPI Run1(LPVOID lpParameter);
DWORD WINAPI Run2(LPVOID lpParameter);
int processnum;
int buffernum;
queue<int> B1;
queue<int> B2;
int main(void)
{
printf("请输入需要执行进程的个数:");
scanf("%d",&processnum);
printf("请输入每个缓冲区最多能缓冲进程的个数:");
scanf("%d",&buffernum);
HANDLE hThread1= CreateThread(NULL, 0, Fun1, NULL, 0, NULL);
HANDLE hThread2 = CreateThread(NULL, 0, Fun2, NULL, 0, NULL);
HANDLE hThread3= CreateThread(NULL, 0, Run1, NULL, 0, NULL);
HANDLE hThread4 = CreateThread(NULL, 0, Run2, NULL, 0, NULL);
CloseHandle(hThread1);
CloseHandle(hThread3);
CloseHandle(hThread2);
CloseHandle(hThread4);
Sleep(4000);
return 0;
}
DWORD WINAPI Fun1(LPVOID lpParameter)
{
while(processnum>0){
if(B1.size()>=buffernum){
printf("一号缓冲区等待。。。\n");
Sleep(40);
}else{
printf("一号缓冲区缓冲程序:%d\n",processnum);
B1.push(processnum);
processnum--;
Sleep(40);
}
}
}
DWORD WINAPI Fun2(LPVOID lpParameter)
{
Sleep(30);
while(processnum>0){
if(B2.size()>=buffernum){
printf("2号缓冲区等待。。。\n");
Sleep(30);
}else{
printf("2号缓冲区缓冲程序:%d\n",processnum);
B2.push(processnum);
processnum--;
Sleep(40);
}
}
}
DWORD WINAPI Run1(LPVOID lpParameter)
{
while(processnum>=0){
if(B1.size()>0){
printf("一号执行程序:%d\n",B1.front());
B1.pop();
Sleep(40);
}else{
printf("一号执行等待。。。\n");
Sleep(400);
}
}
}
DWORD WINAPI Run2(LPVOID lpParameter)
{
while(processnum>=0){
if(B2.size()>0){
printf("2号执行程序:%d\n",B2.front());
B2.pop();
Sleep(40);
}else{
printf("2号执行等待。。。\n");
Sleep(400);
}}
}
c语言双缓冲缓冲机制
最新推荐文章于 2025-03-18 00:02:42 发布
本文深入探讨了C语言中的双缓冲区机制,详细解释了如何使用它来实现图形界面更新,避免屏幕闪烁,提高用户体验。内容包括双缓冲的工作原理、如何在C语言中实现双缓冲以及实际应用案例。

1323

被折叠的 条评论
为什么被折叠?



