需求分析和概要设计

需求分析和概要设计

ID:22439960

大小:50.50 KB

页数:5页

时间:2018-10-29

需求分析和概要设计_第1页
需求分析和概要设计_第2页
需求分析和概要设计_第3页
需求分析和概要设计_第4页
需求分析和概要设计_第5页
资源描述:

《需求分析和概要设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、一、需求分析说明在Windows7环境卜*,创建一个控制台进程,此进程包含n个线程。用这rr个线程来表示rr个读者或写者。每个线程按相应测试数据文件的要求进行读写操作。用信号量机制分别实现读者优先和写者优先的读者-写者问题。读者-写考问题的读写操作限制(包括读者优先和写考优先):1)写-写互斥,即不能有两个写者同吋进行写操作。2)读-写互斥,即不能同时有一个线程在读,而另一个线程在写。3)读-读允许,即可以有一个或多个读者在读。读者优先的附加限制:如果一个读者申请进行读操作时已有另一个读者正在进行

2、读操作,则该读者可直接开始读操作。写者优先的附加限制:如果一个读者中请进行读操作时已有另一写者在等待访问共享资源,则该读者必须等到没有写者处于等待状态后才能开始读操作。运行结果显示要求:要求在每个线程创建、发出读写操作申请、开始读写操作和结束读写操作吋分别显示一行提示信息,以确定所有处理都遵守相应的读写操作限制。以下是各功能模块的功能描述:1.主函数模块判断进行读者优先还是写者优先。2.读者优先-读者线程定义互斥变量h_Mutex,通过WaitForSingleObject(h_Mutex,-l>

3、变现对readcount的互斥访M。1.读者优先-写者线程当前读者进程全部结朿后,等待的写者进程就可以申请资源EnterCriticalSection(&RP_Write)进行写操作。2.写者优先-读者线程定义互斥变量h_Mutexl,h_Mutex2,通过WaitForSingleObject(h_Mutexl,-l)读者进入临界K,同时通过h_Mutex2实现对readcount的互斥访问。3.写者优先-写者线程定义互斥变量h_Mutex3,实现对writecount的互斥访问。4.读写操作优

4、先处理函数从文件中读取相关数据,通过数组依次创建读者进程和写者进程,来协调程序的运行,直到所有的读写线程全部结束。测试数振J•1R352W453R524R655W5.13二、概要设计说明1线程控制:CreateThread完成线程创建,在调用进程的地址空间上创建一个线程,以执行指定的函数;它的返回值为所创建线程的句HANDLECreateThread(LPSECURITY_ATTRIBUTESlpThreadAttributes,//SDDWORDdwStackSize,//initialstac

5、ksizeLPTHREAD_START_ROUTINEIpStartAddress,//threadfunctionLPVOIDIpParameter,//threadargumentDWORDdwCrcationFlags,//creationoptionLPDWORDlpThrcadld//threadidentifier);2RxitThread用于结束当前线程。VOIDExitThread(DWORDdwExitCode//exitcodeforthisthread);3Sleep町在指定

6、的时间内挂起当前线程。VOIDSleep(DWORDdw.Milliseconds//sleeptime);4信号量控制:WaitForSingleObject可在指定的吋间内等待指定对象为可用状态;DWORDWaitForSingleObject(HANDLEhHandle,//handletoobjectDWORDdwMilliscconds//time-outinterval);hHandle为等待的对象,也就是实现同步或者互斥的对象。该函数一执行,相应的信号量就减去1,如果信号量小于等于0

7、,那么他一直在循环。5实现信号量互斥和同步CreateSemaphore用于创建信号量,根据参数的不同町以利用它实现互斥和冋步。ReleaseSemaphore用于释放信号量,使用后相应的信号量加1HANDLECreateSemaphore(LPSECURITY_ATTRIBUTESIpSemaphoreAttributes,//SDLONG,UnitialCount,//initialcountLONG,IMaximumCount,//maximumcountLPCTSTR1pName//obj

8、ectname);ReleaseSemaphore(HANDLEhSemaphore,LONGIRelseaseCount,LPLONGIpPreviousCount);//handletosemaphore//contincrementamount//previouscount6控制流程用CheckPersonList(PersonLists)函数检查PersonLists中是否有为创建的进程(读写者)。如果有则创建相应的读写线程7创建读写者用boolCreateReader(i

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

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

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