while(true){
p(rmutex);
if readcount=0 then
p(wmutex);
readcount:=readcount+1;
v(rmutex);
读文件;
…
p(rmutex);
readcount:=readcount-1;
if readcount=0 then
v(wmutex);
v(rmutex);
}
if readcount=0 then
应该是c里的
if(readcount==0)
{
;
}
那这个呢?readcount:=readcount-1;
p(rmutex);
if readcount=0 then
p(wmutex);
readcount:=readcount+1;
v(rmutex);
读文件;
…
p(rmutex);
readcount:=readcount-1;
if readcount=0 then
v(wmutex);
v(rmutex);
}
if readcount=0 then
应该是c里的
if(readcount==0)
{
;
}
那这个呢?readcount:=readcount-1;
解决方案 »
- 讨论VC客户端程序加登录密码,如何做更安全?谢谢!
- #import 导入控件问题
- 如何编程(如调用WIN API)直接读写网络文件
- 用dll实现多线程,为什么子线程的调试信息?高分求教
- 我是新手,初次提问,希望各位大哥帮帮我,谢谢!
- 求助:win7系统下使用ReleaseSemaphore函数释放信号灯问题
- 关于电子地图中,图形系统与数据库系统连接问题,知情者请进。。。
- 如何在VC环境下,由几个人共同开发一个软件?
- 在得到WM_KEYDOWN后.怎么判定是一个组合键的消息
- 求助MFC Edit Control问题
- Socket问题,对于高手只是小菜一碟
- 问各位一个简单的问题,自己派生重写的CMyListCtrl类,如何设置选中时高亮的颜色?
看下操作系统进程同步,会好点,readcount:=readcount-1; //readcount是记录读者人数的量,一个读者读完后不是要这个量减一嘛,,
//这是读写问题的伪码while(true){
p(rmutex); //申请读,对rmutex互斥,没写者则成功,有写者则挂起
if readcount=0 then //读申请成功,如果是第一个读者,则挂起写者
p(wmutex);
readcount:=readcount+1; //读者人数加一
v(rmutex); //释放rmutex
读文件;
…
p(rmutex); //同上面(只是减一)
readcount:=readcount-1;
if readcount=0 then //如果没有读者了,则释放wmutex
v(wmutex);
v(rmutex);
}