資源簡介
在Windows 2000 環境下,創建一個包含n 個線程的控制臺進程。用這n 個線程來表示n個讀者或寫者。每個線程按相應測試數據文件的要求,進行讀寫操作。請用信號量機制分別實現讀者優先和寫者優先的讀者-寫者問題。
讀者優先:如果一個讀者申請進行讀操作時已有另一讀者正在進行讀操作,則該讀者可直接開始讀操作。
寫者優先:如果一個讀者申請進行讀操作時已有另一寫者在等待訪問共享資源,則該讀者必須等到沒有寫者處于等待狀態后才能開始讀操作。

代碼片段和文件信息
#include?
#include?
HANDLE?h_Mutex;
//bool?STOP=0;
//CRITICAL_SECTION?RP;
const?int?maxwork?=?100;
int?workid?=10;
DWORD?_stdcall?a1()
{
//OpenMutex(NULLTRUENULL);
// EnterCriticalSection(&RP);
/* while(STOP==1)
{
STOP=0;
cout<<1111< } */
for(;?;)
{
WaitForSingleobject(h_Mutex2000);
if(workid {
workid?+=1;
Sleep(1000);
cout<<“Thread?a1?out?“< }
ReleaseMutex(h_Mutex);
}
}
DWORD?_stdcall??a2()
{//cout<<2222< //OpenMutex(NULLfalseNULL);
for(;?;)
{
WaitForSingleobject(h_Mutex2000);
if(workid {
workid?+=1;
Sleep(1000);
cout<<“Thread?a2?out?“< }
ReleaseMutex(h_Mutex);
}
}
void?a3()
{
//OpenMutex(NULLfalseNULL);
cout<<3333< }
void?main()
{
//int?a[3]={463};//DWORD?dwThreadID;
HANDLE?handle1handle2;
//handle1=OpenMutex();
handle1=::CreateThread(NULLFALSE(LPTHREAD_START_ROUTINE)(a1)NULL0NULL);
handle2=::CreateThread(NULLFALSE(LPTHREAD_START_ROUTINE)(a2)NULL0NULL);
h_Mutex=CreateMutex(NULLFALSE“MUTEX“);
CloseHandle(handle1);
CloseHandle(handle2);
//*
while(true)
{
;system(“PAUSE“);
}
//*/
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????50176??2009-06-08?23:24??線程\線程.ncb
?????文件?????164864??2009-06-08?23:24??線程\Debug\vc60.idb
?????文件??????94208??2009-06-08?23:22??線程\Debug\vc60.pdb
?????文件?????648192??2009-06-08?23:22??線程\Debug\線程.pdb
?????文件?????213039??2009-05-30?12:51??線程\Debug\main.exe
?????文件?????566272??2009-05-30?12:51??線程\Debug\main.pdb
?????文件?????258376??2009-05-30?12:51??線程\Debug\main.ilk
?????文件?????349992??2009-06-08?23:24??線程\Debug\線程.ilk
?????文件?????253999??2009-06-08?23:24??線程\Debug\線程.exe
?????文件????3617892??2009-06-08?22:11??線程\Debug\main.pch
?????文件??????17299??2009-06-08?22:11??線程\Debug\main.obj
?????文件????3653324??2009-06-08?22:11??線程\Debug\線程.pch
?????文件??????26067??2009-06-08?23:24??線程\Debug\線程.obj
?????文件????????736??2009-06-08?23:24??線程\線程.plg
?????文件??????50176??2009-06-08?22:11??線程\main.ncb
?????文件????????646??2009-06-08?22:11??線程\main.plg
?????文件???????1258??2009-05-30?12:51??線程\main.cpp
?????文件?????????43??2009-05-30?23:17??線程\1.txt
?????文件???????3377??2009-06-08?22:10??線程\main.dsp
?????文件??????48640??2009-06-08?22:11??線程\main.opt
?????文件????????516??2009-06-08?22:11??線程\main.dsw
?????文件???????3379??2009-06-08?22:45??線程\線程.dsp
?????文件??????48640??2009-06-08?23:24??線程\線程.opt
?????文件????????516??2009-06-08?23:24??線程\線程.dsw
?????文件???????4566??2009-06-09?11:39??線程\線程.cpp
?????目錄??????????0??2009-05-29?18:39??線程\Debug
?????目錄??????????0??2009-05-29?18:39??線程
-----------?---------??----------?-----??----
?????????????10076193????????????????????27
............此處省略0個文件信息
- 上一篇:MyBatis 從入門到精通
- 下一篇:計算機組網技術
評論
共有 條評論