资源简介
操作系统 课程设计 C++ 读者写者问题 源代码,写实验报告必备良品,代码无错,直接运行VC
代码片段和文件信息
#include “stdafx.h“
#include “windows.h“
#include
#include
#include
#include
#include
#include
#define READER ‘R‘ //读者
#define WRITER ‘W‘ //写者
#define INTE_PER_SEC 1000 //每秒时钟中断的数目
#define MAX_THREAD_NUM 64 //最大线程数
#define MAX_FILE_NUM 32 //最大文件数目数
#define MAX_STR_LEN 32 //字符串的长度
int readcount=0; //读者数目
int writecount=0; //写者数目
CRITICAL_SECTION RP_Write; //临界资源
CRITICAL_SECTION cs_Write;
CRITICAL_SECTION cs_Read;
struct ThreadInfo
{
int serial; //线程序号
char entity; //线程类别(判断是读者还是写者线程)
double delay; //线程延迟时间
double persist; //线程读写操作时间
};
//读者优先--读者线程
//P:读者线程信息
void RP_ReaderThread(void *p)
{
//互斥变量
HANDLE h_Mutex;
h_Mutex=OpenMutex(MUTEX_ALL_ACCESSFALSE“mutex_for_readcount“);
DWORD wait_for_mutex; //等待互斥变量所有权
DWORD m_delay; //延迟时间
DWORD m_persist; //读文件持续时间
int m_serial; //线程序号
// 从参数中获得信息
m_serial=((ThreadInfo*)(p))->serial ;
m_delay=(DWORD)(((ThreadInfo*)(p))->delay *INTE_PER_SEC);
m_persist=(DWORD)(((ThreadInfo*)(p))->persist *INTE_PER_SEC);
Sleep(m_delay); //延迟等待
printf(“读线程 %d 发出读请求.\n“m_serial);
//等待互斥信号保证对ReadCount 的访问修改互斥
wait_for_mutex=WaitForSingleobject(h_Mutex-1);
//读者数目增加
readcount++;
if(readcount==1)
{
//第一个读者等待资源
EnterCriticalSection(&RP_Write);
}
ReleaseMutex(h_Mutex); //释放互斥信号
//读文件
printf(“读线程 %d 开始读文件.\n“m_serial);
Sleep(m_persist);
//退出线程
printf(“读线程 %d 结束读文件.\n“m_serial);
//等待互斥信号保证对ReadCount的访问修改互斥
wait_for_mutex=WaitForSingleobject(h_Mutex-1);
//读者数目减少
readcount--;
if(readcount==0)
{
//如果所有的读者读完唤醒写者
LeaveCriticalSection(&RP_Write);
}
ReleaseMutex(h_Mutex); //释放互斥信号
}
//读者优先--写者线程
//P:写者线程信息
void RP_WriterThread(void *p)
{
DWORD m_delay; //延迟时间
DWORD m_persist; //写文件持续时间
int m
相关资源
- 操作系统 课程设计 C++ 模拟文件系统
- c++ http
- c++ http并保存到本地
- C++ HTTP GET,POST的简单
- 数据压缩LZW编码c++程序
- 数据压缩 算术编码 c++ 程序
- C/C++/STL帮助手册 chm完整离线版
- ECC算法 C++实现 加解密
- 高斯投影正算C++源代码
- C++课程设计——学生学籍管理系统
- 清华大学C++内部题库 绝对好题
- Windows课程设计报告与源码
- VC++ MFC的餐厅点餐系统
- 用c++解决金刚坐飞机问题
- C++景区旅游信息管理系统
- 文件同步与异步读写
- hiredis的c++封装, 线程安全
- C++实现Apriori算法,频繁模式数据挖掘
- C++获取windows系统服务
- 矩阵算法相关代码
- 点扩散函数PSF
- 潮流计算 高斯赛德尔法
- RPP算法-RobustPlanarPose-C++
- PnP solvers C++版本,包括P3Pf,Epnp等
- 道格拉斯算法C++实现
- c++获取cpu使用率包含系统和单进程
- C++封装的一个跨平台的线程类和锁类
- C++信号量实现互斥爸爸女儿儿子苹果
- grpc c++
- 学生成绩管理系统(MFC)
评论
共有 条评论