資源簡(jiǎn)介
在Windows 2000 環(huán)境下,創(chuàng)建一個(gè)包含n 個(gè)線程的控制臺(tái)進(jìn)程。用這n 個(gè)線程來(lái)表示n個(gè)讀者或?qū)懻摺C總€(gè)線程按相應(yīng)測(cè)試數(shù)據(jù)文件的要求,進(jìn)行讀寫操作。請(qǐng)用信號(hào)量機(jī)制分別實(shí)現(xiàn)讀者優(yōu)先和寫者優(yōu)先的讀者-寫者問(wèn)題。
讀者優(yōu)先:如果一個(gè)讀者申請(qǐng)進(jìn)行讀操作時(shí)已有另一讀者正在進(jìn)行讀操作,則該讀者可直接開始讀操作。
寫者優(yōu)先:如果一個(gè)讀者申請(qǐng)進(jìn)行讀操作時(shí)已有另一寫者在等待訪問(wèn)共享資源,則該讀者必須等到?jīng)]有寫者處于等待狀態(tài)后才能開始讀操作。

代碼片段和文件信息
#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“);
}
//*/
}
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件??????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個(gè)文件信息
評(píng)論
共有 條評(píng)論