[30][13][单选]学校教务处在学生选课系统中编写了如下程序供选课学生在网上使用:
Semaphores mutex; //定义信号量 PROCESS P(i, j //学生学号为 i,课程号为 j { int r; P(r; //局部变量 r = search(j; //找到课程 j 并返回课程 j 剩余量 if (r >= 1 { identify(i, j; //确认学生选课成功,记录 r = r - 1; modify(j; //将课程 j 的剩余量修改为 r print("恭喜你选课成功!"; } else print("对不起,没有该课程或选课已满。"; V(mutex; //解锁 } 请问,该选课程序在使用时
选课学生数可能会超出课程容量
选课学生能够正常选课,选课学生数与初始相符
选课学生未选到系统可能发生死锁
选课学生选不到课,系统会报错
答案
选课学生能够正常选课,选课学生数与初始相符
解析
根据编写的程序可知,判断课程是否可选,主要取决于局部变量 r 的值。程序中设置了 mutex,该信号量只能表示对选课系统进行访问控制,当学生在选课的时候,只要选中了所选的课程,课程剩余量就会减少,不会等到学生选择成功后才修改课程剩余量的值,否则选课学生数可能会超出课程容量。故答案选择 B 选项。
转载请注明出处。