欢迎来到天天文库
浏览记录
ID:28014693
大小:134.79 KB
页数:9页
时间:2018-12-07
《操作系统实验报告读者写者问题》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、实习题目:操作系统实习报告读者写者问题闩期:完姓名:陈明明组号:成人学号0843041112实习内容简要描述创建一个控制台进程。此进程包含II个线程。用这II个线程来表示n个读者或写者。每个线程按相应测试数据文件(后Ifif有介绍)的要求进行读写操作。用信号量机制分别实现读者优先和写者优先的读者-写者问题主要代码结构(附注释)#dcfincMAX一THREAD64#include"stdafx.h"#includenwindows.hr#include#includc#include#include#include<
2、string.h>#include#defineREADER’R*#defineWRITERW*#defineINTE_PER_SEC100()/Z#defineMAX_FILE_NUM32"#defineMAX一STRJLEN32intreadcount=0;intvritecount=();//intr—i二1;//intwj=1;//读者//写奍//拇秒时钟屮断数目//最大线程数目//最人数据文件数目//字符申长度//读者数H//写者数UCRITICAL—SECTIONRP_■Write;//临界区CRITICAL_SECTIONCS_■Write;//--临界
3、区写CRITICAL_SECTIONCS.JRcad;//-•临界区读structThreadlnfo/Z定义线程的结构{intserial;//线程序号charentity;//线程类别(判断足读者线程还足y者线程)doubledelay;//线程延迟doublepersist;//线程读写操作持续吋间};voidRP_ReaderThread(void*p)//读者优先—读者线程HANDLEh一Mutex;//互斥变量//OpcnMutcx函数功能:力现冇的一个己命名丸斤体对象创建一个新句柄h_Mutex=OpenMutex(MUTEX_ALL_ACCESS,FALSE,"mutex
4、_for_readcount");DWORDwait_for_mutex;//等待互斤变量所脊权DWORDm_delay;//延迟时间DWORDm_persist;//读文件持续时间intm_serial;//线裡序兮//从参数中获得信息m_scrial=((Thrcadlnfo*)(p))->serial;m_delay=(DWORD)(((ThreadInfo*)(p))->delay*INTE_PER_SEC);m_persist=(DWORD)(((ThreadInfo*)(p))->persist*INTE_PER_SEC);Sleep(m_delay);//延迟等待,然后发出
5、对共亨资源的读(写)申请。printf("Readerthread%dsentsthereadingrequire.",m_serial);wait_for_mutex=WaitForSingleObject(h_Mutex,-1);readcount++;//读君数目增加if(readcount==1){EnterCriticalSection(&RP_Write);//第一个读者,等待资源}ReleaseMutex(h_Mutex);//释放互斥信号printf("Readerthread%clbeginstoreadfile.'m_serial);//读文件Sleep(m
6、_persist);printf("Readerthread%dfinishedreadingfile.",m_serial);//退出线程wait_for_mutex=WaitForSingleObject(h_Mutex,-1);readcount-;//读者数目减少if(rcadcount==0){LeaveCriticalSection(&RP_Write);)RclcascMutcx(h_Mutcx);//释放.互斤信兮}voidRP_WriterThread(void*p)//-读者优先-写者线程{DWORDm_delay;//延迟时间DWORDm_pcrsist;//写
7、文件持续吋间intm_serial;//线程序号m_serial=((Threadlnfo*)(p))->serial;//从参数中获得信息rn_delay=(DWORD)(((ThreadInfo*)(p))->delay*INTE_PER_SEC);m.persist=(DWORD)(((ThreadInfo*)(p))->persist*INTE_PER_SEC);Slccp(m_dclay);//延迟等待printf("Wr
此文档下载收益归作者所有