为某临界区设置一把锁W,当W=1时,表示关锁;

来源:百度知道 编辑:UC知道 时间:2024/05/19 20:24:04
为某临界区设置一把锁W,当W=1时,表示关锁;当W=0时,表示锁已打开。写出开锁和关锁原语,并利用他们去实现互斥。

答:整型信号量:lock(W): while W=1 do no-op W:=1;
unlock(W): W:=0;
记录型信号量:lock(W): W:=W+1;
if(W>1) then block(W, L)
unlock(W): W:=W-1;
if(W>0) then wakeup(W, L)
例子:
Var W:semaphore:=0;
begin
repeat
lock(W);
critical section
unlock(W);
remainder section
until false;
end

signal(w)
do something
wait(w)