我们为某临界区设置一把锁W,当W=1时表示关锁,W=0时表示锁已打开。试写出开锁原语和关锁原语,并利用它们去实现互斥。
【正确答案】正确答案:(1)开锁原语: unlock(W): W=0; 关锁原语: lock(W); if(W==1)do no_op; W=1; (2)利用开关锁原语实现互斥: vat W:semaphore:=0; begin parbegin process: begin repeat lock(W); critical section unlock(W): remainder section until false; end parend
【答案解析】