读者写者问题:读者优先,允许多个读者同时读,但只允许一个写者写

#include<windows.h>#include<iostream>usingnamespacestd;intreadercount=0;HANDLEr,w;CRI... #include<windows.h>
#include<iostream>
using namespace std;
int readercount=0;
HANDLE r,w;
CRITICAL_SECTION cs;
DWORD WINAPI writer(PVOID pArg){
int ww=(int)pArg;
DWORD t;
while(true){
t=WaitForSingleObject(w,1);
if(t==WAIT_TIMEOUT)
{
EnterCriticalSection(&cs);
cout<<"writer "<<ww<<" waite to read...."<<endl;
LeaveCriticalSection(&cs);
WaitForSingleObject(w,INFINITE);
}
EnterCriticalSection(&cs);
cout<<"writer "<<ww<<" start to write...."<<endl;
LeaveCriticalSection(&cs);
Sleep(3000);
EnterCriticalSection(&cs);
cout<<"writer "<<ww<<" finish writing...."<<endl;
LeaveCriticalSection(&cs);
Sleep(5000);
ReleaseSemaphore(w, 1, NULL);
}
return 0;
}
DWORD WINAPI reader(PVOID pArg){
int rr=(int)pArg;
DWORD t;
while(true){
readercount++;
if(readercount==1)
{
t=WaitForSingleObject(w,1);
if(t==WAIT_TIMEOUT)
{
EnterCriticalSection(&cs);
cout<<" reader "<<rr<<" waite to read...."<<endl;
LeaveCriticalSection(&cs);
WaitForSingleObject(w,INFINITE);
}
}
EnterCriticalSection(&cs);
cout<<" reader "<<rr<<" start to read...."<<endl;
LeaveCriticalSection(&cs);
Sleep(3000);
EnterCriticalSection(&cs);
cout<<" reader "<<rr<<" finish reading...."<<endl;
LeaveCriticalSection(&cs);
Sleep(5000);
readercount--;
if(readercount==0)
ReleaseSemaphore(w, 1, NULL);
}
return 0;
}
int main(){
int i;
InitializeCriticalSection(&cs);
w = CreateSemaphore(NULL, 1, 1, NULL);
HANDLE Thread[6];
for(i=0;i<3;i++)
Thread[i]=CreateThread(NULL,0,reader,(LPVOID)(i+1),0,NULL);
for(i=3;i<5;i++)
Thread[i]=CreateThread(NULL,0,writer,(LPVOID)(i-2),0,NULL);
WaitForMultipleObjects(5, Thread, TRUE, INFINITE);
CloseHandle(r);
DeleteCriticalSection(&cs);
return 0;
}
展开
 我来答
小张你好zj
2015-04-28 · TA获得超过5万个赞
知道大有可为答主
回答量:1.2万
采纳率:83%
帮助的人:3015万
展开全部
编译能够通过吧,就是看调试运行是否与期望一样。

如果你觉得我的回答比较满意,希望给个采纳鼓励我!不满意可以继续追问。
更多追问追答
追问
编译可以,但是总是读者在读,没有写者的事
追答
是这样啊,我再仔细研究一下。你的意思是找出症结所在并加以修改?
jaajjffa
2017-01-18 · TA获得超过1994个赞
知道小有建树答主
回答量:1689
采纳率:62%
帮助的人:684万
展开全部
完全不知道在说什么...
而且,写者应该成为作者才对吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小宝宝圣素心弗尔艾
2015-04-28 · 超过23用户采纳过TA的回答
知道答主
回答量:198
采纳率:0%
帮助的人:44.8万
展开全部
看不懂,有中文吗?
追问
什么中文?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式