需求分析和概要设计.doc一、需求分析说明在Windows7环境下,创建一个控制台进程,此进程包含n个线程。用这门个线程来表示门个读者或写者。每个线程按相应测试数据文件的要求进行读写操作。用信号量机制分别实现读者优先和写者优先的读者-写者问题。读者-写者问题的读写操作限制(包括读者优先和写者优先):1)写-写互斥,即不能有两个写者同时进行写操作。2)读-写互斥,即不能同时有一个线程在读,而另一个线程在写。3)读-读允许,即可以有一个或多个读者在读。读者优先的附加限制:如果一个读者申请进行读操作时已有另一个读者正在进行读操作,则该读者可直接开始读操作。写者优先的附加限制:如果一个读者申请进行读操作时已有另一写者在等待访问共享资源,则该读者必须等到没有写者处于等待状态后才能开始读操作。运行结果显示要求:要求在每个线程创建、发出读写操作申请、开始读写操作和结束读写操作时分别显示一行提示信息,以确定所有处理都遵守相应的读写操作限制。以下是各功能模块的功能描述:。•读者线程定义互斥变量h_Mutex,通过WaitForSingleObject(h_Mutex,-l)实现对readcount的互斥访问。•读者优先•写者线程当前读者进程全部结束后,等待的写者进程就可以申请资源EnterCriticalSection(&RP_Write)进行写操作。写者优先•读者线程定义互斥变量h_Mutexl,h_Mutex2,通过WaitForSingleObject(h_Mutexl,-l)读者进入临界区,同时通过h_Mutex2实现对readcount的互斥访问。写者优先•写者线程定义互斥变量h_Mutex3,实现对writecount的互斥访问。读写操作优先处理函数从文件中读取相关数据,通过数组依次创建读者进程和写者进程,来协调程序的运行,直到所有的读写线程全部结束。测试数据:、概要设计说明1线程控制:CreateThread完成线程创建,在调用进程的地址空间上创建一个线程,以执行指定的函数;它的返回值为所创建线程的句柄。HANDLECreateThread(LPSECURTTYj\TTRTBUTESIpThreadAttributes,//SDDWORDdwStackSize,//initialstacksizeLPTHREAD—START—ROUTINEIpStartAddress,//threadfunctionLPVOIDlpParameter,//threadargumentDWORDdwCreationFlags,//creationoptionLPDWORD1pThreadld//threadidentifier);ExitThread用于结束当前线程。VOIDExitThread(DWORDdwExitCode//exitcodeforthisthread);Sleep可在指定的时间内挂起当前线程。VOIDSleep(DWORDdwMilliseconds//sleeptime);4信号量控制:WaitForSingleObject可在指定的时间内等待指定对象为可用状态;DWORDWaitForSingleObject(HANDLEhHandle,//handletoobjectDWORDdw
需求分析和概要设计 来自淘豆网www.taodocs.com转载请标明出处.