资源简介
一个简单的有关于生产者和消费者问题的实例程序
代码片段和文件信息
#include “windows.h“
#include
#include
const unsigned short BUFFER_SIZE = 10;
short writer_id = 0;
short reader_id = 0;
short in = 0;
short out = 0;
int buffer[BUFFER_SIZE];
bool continu = true;
HANDLE hmutex;
HANDLE hfullsemaphore;
HANDLE hemptysemaphore;
double eRandom(int upLimit);
typedef struct
{ int data;
}INTEGER;
void Reader()
{
reader_id=buffer[out];
out=(out+1)%BUFFER_SIZE;
}
void Writer()
{
buffer[in]=writer_id;
in=(in+1)%BUFFER_SIZE;
}
DWORD WINAPI reader(LPVOID lppara)
{
while(continu){
WaitForSingleobject(hemptysemaphoreINFINITE);
WaitForSingleobject(hmutexINFINITE);
if(reader_id==10)
return 0;
int tNo=((INTEGER*)lppara)->data;
printf(“第 %d 个读者读出 %d \n“tNo++reader_id);
int sleepTime=20*(int)eRandom(50+tNo);
Sleep(sleepTime);
Reader();
ReleaseMutex(hmutex);
ReleaseSemaphore(hfullsemaphore1NULL);
}
return 0;
}
DWORD WINAPI writer(LPVOID lppara)
{
while(continu){
WaitForSingleobject(hfullsemaphoreINFINITE);
WaitForSingleobject(hmutexINFINITE);
if(writer_id==10)
return 0;
int tNo=((INTEGER*)lppara)->data;
printf(“第 %d 个写入者写入 %d \n“tNo++writer_id);
int sleepTime=10*(int)eRandom(50+tNo);
Sleep(sleepTime);
Writer();
ReleaseMutex(hmutex);
- 上一篇:socket文件传输C++
- 下一篇:C语言经典程序设计源代码之画图软件
相关资源
- 操作系统课程设计——多线程同步演
- 进程管理和调度的算法实现
- 用C#和C++实现的进程调度算法程序操作
- VC++ 四种进程间通信的完整
- 基于 51 单片机 多进程 多任务 纯 C语
- c++操作系统进程管理模拟
- 操作系统进程调度算法——短作业优
- c语言多进程多线程编程
- c++11互斥库mutex的使用
- 非抢占式短作业优先进程调度C语言
- 系统进程统计
- 设计一个有 N个进程调度程序设计
- 进程调度的设计与实现图形界面实现
- 操作系统使用C语言链表实现进程管理
- 操作系统生产者与消费者综合性实验
- PTP时间同步C++实现
- 基于FCFS和SPF的进程管理系统可用资源
- 任务管理器中隐藏进程 支持win10 win
- 进程管理 执行 唤醒 阻塞 结束
- linuxc语言信号量爸爸女儿儿子橘子苹
- tcp socket实现单进程单线程 高并发服务
- 进程调度的设计与实现代码C++
- 最优时间表 一台精密仪器的工作时间
- 多进程写文件仿真
- 多道批处理系统两级调度的模拟
- 操作系统 4种经典同步互斥问题
- C++进程优先级调度进程优先级调度进
- 用C\\C++实现操作系统经典同步问题,
- c语言模拟进程
- 进程调度的设计与实现图形界面c++
评论
共有 条评论