资源简介
操作系统 课程设计 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
相关资源
- 国际象棋的qt源代码
- 操作系统c语言模拟文件管理系统844
- C++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- C语言课程设计
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- 操作系统课设 读写者问题 c语言实现
- C++纯文字DOS超小RPG游戏
- c语言电子商务系统
- VC++MFC小游戏实例教程(实例)+MFC类库
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- C++ mqtt 用法
- 商品库存管理系统 C++ MFC
- c++ 多功能计算器
- C++17 In Detail
- ROS操作系统入门讲义
- 嵌入式QtC++编程课件
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
评论
共有 条评论