18、独木桥问题。某条河上只有一座独木桥,以便行人过河。现在河的两边都有人要过桥,按照下面的规则过桥。为了保证过桥安全,请用P(或wait)、V(或signal)操作分别实现正确的管理。 过桥的规则是:同一方向的可连续过桥,某方向有人过桥时另一方向的人 要等待。 解答:将独木桥的两个方向分别标记为A和B;并用整形变量countA和countB分别表示A、B方向上已在独木桥上的行人数,初值为0;再设置三个初值都1的互斥信号量:SA用来实现对countA的互斥访问,SB用来实现对countB的互斥访问,mutex用来实现两个方向的行人对独木桥的互斥使用。则具体描述如下: semaphore SA,SB,mutex; SA=1; SB=1; mutex=1; int countA=0; int countB=0; void Process_A() { ——1—— if(countA==0) { ——2—— countA+=1; } ——3—— 过独木桥; wait(SA); countA-=1

A.wait(SB); B.wait(mutex); C.signal(SB); D.signal(mutex);

时间:2024-04-26 11:47:37

相似题目