操作系统实验报告读者写者问题

操作系统实验报告读者写者问题

ID:28014693

大小:134.79 KB

页数:9页

时间:2018-12-07

操作系统实验报告读者写者问题_第1页
操作系统实验报告读者写者问题_第2页
操作系统实验报告读者写者问题_第3页
操作系统实验报告读者写者问题_第4页
操作系统实验报告读者写者问题_第5页
资源描述:

《操作系统实验报告读者写者问题》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

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

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。