#include#include#include#include"> #include#include#include#include" />
读者写者问题 ----写者优先.doc

读者写者问题 ----写者优先.doc

ID:29111606

大小:40.50 KB

页数:9页

时间:2018-12-16

读者写者问题 ----写者优先.doc_第1页
读者写者问题 ----写者优先.doc_第2页
读者写者问题 ----写者优先.doc_第3页
读者写者问题 ----写者优先.doc_第4页
读者写者问题 ----写者优先.doc_第5页
资源描述:

《读者写者问题 ----写者优先.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、读者写者问题 ----写者优先#include"windows.h"#include#include#include#include#include#include#defineINTE_PER_SEC1000           //每秒时钟中断的数目#defineMAX_THREAD_NUM64           //最大线程数#defineMAX_FILE_NUM32             //最大文件数目数#defineM

2、AX_STR_LEN32              //字符串的长度        FILE*file;            FILE*inFile;intreadcount=0;                    //读者数目intwritecount=0;                   //写者数目                                    //临界资源CRITICAL_SECTIONcs_Write;CRITICAL_SECTIONcs_Read;structThreadInfo{      in

3、tserial;                    //线程序号       charentity;                    //线程类别(判断是读者还是写者线程)       doubledelay;                   //线程延迟时间       doublepersist;                 //线程读写操作时间};//写者优先---读者线程//P:读者线程信息voidWP_ReaderThread(void*p){      //互斥变量      HANDLEh_Mutex1=Ope

4、nMutex(MUTEX_ALL_ACCESS,FALSE,"mutex1");      HANDLEh_Mutex2=OpenMutex(MUTEX_ALL_ACCESS,FALSE,"mutex2");      DWORDwait_for_mutex1;          //等待互斥变量所有权      DWORDwait_for_mutex2;      DWORDm_delay=(DWORD)(((ThreadInfo*)(p))->delay*INTE_PER_SEC); //延迟时间      DWORDm_persist=

5、(DWORD)(((ThreadInfo*)(p))->persist*INTE_PER_SEC);//读文件持续时间      int  m_serial=((ThreadInfo*)(p))->serial;    //线程的序号      Sleep(m_delay);                 //延迟等待       printf("Readerthread%dsentsthereadingrequire.",m_serial);      fprintf(file,"Readerthread%dsentsthereadi

6、ngrequire.",m_serial);///////////      wait_for_mutex1=WaitForSingleObject(h_Mutex1,-1);           EnterCriticalSection(&cs_Read);  //读者进去临界区       //阻塞互斥对象Mutex2,保证对readCount的访问和修改互斥       wait_for_mutex2=WaitForSingleObject(h_Mutex2,-1);       readcount++;       if(read

7、count==1)       {  //如果是第1个读者,等待写者写完              EnterCriticalSection(&cs_Write);       }       ReleaseMutex(h_Mutex2);//释放互斥信号Mutex2       //让其他读者进去临界区       LeaveCriticalSection(&cs_Read);       ReleaseMutex(h_Mutex1);       //读文件       printf("Readerthread%dbeginstoread

8、file.",m_serial);       fprintf(file,"Readerthread%dbeginstoreadfile.",m_seria

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

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

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