一个简单的关于进程同步的问题,我实在没地方问了。
两个并发的进程,大概是这样
Var mutex:semaphore:=1;
begin
parbegin
process 1:begin
repeat
wait(mutex);
critical section
signal(mutex);
remainder section
until false;
end
process 2:begin
repeat
wait(mutex);
critical section
signal(mutex);
remainder section
until false;
end
parend
我就有件事不明白,为什么加上repeat...until false阿?这是指死循环阿,难道一旦执行1个进程,就需要不断的循环执行吗?应该不会这样啊,比如读者进程和写者进程,我觉得来1个读者顺序执行
wait(mutex);
critical section
signal(mutex);
remainder section
就可以了
再来一个读者,才会再次进入,执行
wait(mutex);
critical section
signal(mutex);
remainder section
可是为什么操作系统的教程上在进程里面总是要加上repeat...until false呢?