91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

操作系統 課程設計 C++ 讀者寫者問題 源代碼,寫實驗報告必備良品,代碼無錯,直接運行VC

資源截圖

代碼片段和文件信息

#include?“stdafx.h“
#include?“windows.h“
#include?
#include?
#include?
#include?
#include?
#include?

#define?READER?‘R‘???????????????????//讀者
#define?WRITER?‘W‘???????????????????//寫者
#define?INTE_PER_SEC?1000????????????//每秒時鐘中斷的數目
#define?MAX_THREAD_NUM?64????????????//最大線程數
#define?MAX_FILE_NUM?32??????????????//最大文件數目數
#define?MAX_STR_LEN?32???????????????//字符串的長度

int?readcount=0;?????????????????????//讀者數目

int?writecount=0;????????????????????//寫者數目

CRITICAL_SECTION?RP_Write;???????????//臨界資源
CRITICAL_SECTION?cs_Write;
CRITICAL_SECTION?cs_Read;

struct?ThreadInfo

{
?int?serial;??????????????????????//線程序號
?char?entity;?????????????????????//線程類別(判斷是讀者還是寫者線程)
?double?delay;????????????????????//線程延遲時間
?double?persist;??????????????????//線程讀寫操作時間
};

//讀者優先--讀者線程
//P:讀者線程信息
void?RP_ReaderThread(void?*p)

{
???????//互斥變量
???????HANDLE?h_Mutex;
???????h_Mutex=OpenMutex(MUTEX_ALL_ACCESSFALSE“mutex_for_readcount“);
???
???????DWORD?wait_for_mutex;????????????//等待互斥變量所有權
???????DWORD?m_delay;???????????????????//延遲時間
???????DWORD?m_persist;?????????????????//讀文件持續時間
???????int?m_serial;????????????????????//線程序號

???????//??從參數中獲得信息
???????m_serial=((ThreadInfo*)(p))->serial?;
???????m_delay=(DWORD)(((ThreadInfo*)(p))->delay?*INTE_PER_SEC);
???????m_persist=(DWORD)(((ThreadInfo*)(p))->persist?*INTE_PER_SEC);
???????Sleep(m_delay);??????????????????//延遲等待

???????printf(“讀線程?%d?發出讀請求.\n“m_serial);

???????//等待互斥信號保證對ReadCount?的訪問修改互斥
???????wait_for_mutex=WaitForSingleobject(h_Mutex-1);

???????//讀者數目增加
???????readcount++;
???????if(readcount==1)

???????{
??????????????//第一個讀者等待資源
??????????????EnterCriticalSection(&RP_Write);
???????}

???????ReleaseMutex(h_Mutex);????????????//釋放互斥信號
??????//讀文件
???????printf(“讀線程?%d?開始讀文件.\n“m_serial);
???Sleep(m_persist);

???????//退出線程
???????printf(“讀線程?%d?結束讀文件.\n“m_serial);
???//等待互斥信號保證對ReadCount的訪問修改互斥
???????wait_for_mutex=WaitForSingleobject(h_Mutex-1);
???????//讀者數目減少
????????readcount--;
????????if(readcount==0)
????????{
???????????????//如果所有的讀者讀完喚醒寫者
???????????????LeaveCriticalSection(&RP_Write);
????????}
????????ReleaseMutex(h_Mutex);??????????//釋放互斥信號
}

//讀者優先--寫者線程
//P:寫者線程信息
void?RP_WriterThread(void?*p)
{
???????DWORD?m_delay;???????????????????//延遲時間
???????DWORD?m_persist;?????????????????//寫文件持續時間
???????int?m

評論

共有 條評論