首页 > 题库 > 学历提升 > 自学考试 > 自考本科 > 案例题

一条东西走向的河流上,有一根南北走向的独木桥,要想过河只能通过这根独木桥。只要人们朝着相同的方向过独木桥,同一时刻允许有多个人可以通过。如果在相反的方向上同时有两个人过独木桥则会发生死锁。如果一个人想过河,他必须看当前独木桥的通行情况,若当前的通行方向与他的过河方向相同,则他可以过河,否则他必须等待。
下面的代码用记录型信号量机制的wait操作和signal操作解决了由北向南和由南向北过河人的同步问题。要求将由北向南代码段中编号①~⑤处空缺的内容填写在答题卡上。
var S,N, mutex: semaphore;
Ncount, Scount : integer;
mutex.value= 1;
S.value = 1;
N.value = 1;
Ncount = 0;
Scount= 0;

NorthToSouth:
Begin
        Repeat
                wait(S);
                if(  ①  )   _②_;
                Scount++;

                _③_;
                通过独木桥过河;
                _④_;
                Scount-;
                if (Scount==0)    signal(mutex);
                _⑤_;
         Until faIse;
  End


  SorthToNouth:
  Begin
          Repeat
                  wait(N);
                  if (Ncount==0)    wait(mutex);
                  Ncount++;
                  signal(N);
                  通过独木桥过河;
                  wait(N);
                  Ncount--;
                  if (Ncount ==0)   signal(mutex);
                  signal(N);
  Until false;
End


参考答案: 查看答案 查看解析 下载APP畅快刷题

相关知识点试题

相关试卷