用PASCAL程序编写的信号量集机制解决读者写者问题存在的几个疑点?

来源:百度知道 编辑:UC知道 时间:2024/06/01 03:37:38
var RN integer;
L,MX:semaphore:=RN,1;
begin
parbegin
reader:begin
repeat
Swait(L,1,1);
Swait(mx,1,0);
............
perform read operation;
Ssignal(L,1);
until false;
end
writer:begin
reapt
Swait(mx,1,1;L,RN,0);
perform write operation;
Ssignal(mx,1);
until false;
end
parend
end 程序中,加了一个限制,最多只允许RN个读者同时读。通过执行Swait(L,1,1)来操作。这里我就迷糊了,Swait中的第一个参数L我理解,但后面是两个常数1和1.不知道起什么作用了?Swait(mx,1,0)后面的1和0两个参数情况也是一样,不知道作用是什么?Swait(mx,1,1;L,RN,0)也弄不明白?请高手指点!!!!这个程序是西安电子科技大学 汤子瀛 编写的 计算机操作系统64页 讲解信号量集机制解决读者写者问题时作者给出的一个程序,并且我对Swait(mx,1,0)操作中参数为常数很疑惑,应为Swait操作对应的还要执行Ssignal操作还原变量,如果是常数那么如何还原呢?????

swait(L,1,1)是信号量集,书上53页有详细讲解的~~这个相当于普通的记录型信号量,就是当wait(L)即L》=1时,L:=L-1,然后执行后面的。swait(mx,1,0)相当于开关的作用,书上64页下面有讲解的~~