[真2][12][单选]对于如下银行存款的程序
typedef semaphore; semaphore dblock; dblock = 0; void deposit(id, int c) //存款程序,id 是用户号,c 为存入现金额 { int n; P(dblock); //P操作 n = fetch(balance); // 从服务器取存款余额 n = n + c; // 存款余额加存入现金额 send(n); // 送回新余额 V(dblock); // V操作 output(n); // 打印余额凭条 }
其中,V(db_lock)语句的作用是
测试是否能正确进入临界区
访问临界资源
将“正在访问临界区”的标志清除
访问临界资源之外的其余部分
答案
将“正在访问临界区”的标志清除
解析
程序中的存款余额 n 是属于临界资源,同一时间只有一个进程进行访问,所以为该资源设置了一个信号量 db_lock,对 db_lock 进行 P 操作进入临界区操作P(db_lock,主要作用是将“正在访问临界区”的标志设置,V(db_lock属于释放区操作,表示访问临界资源之外的其余部分。在 C 程序设计中都是对临界资源进行访问,所以 V(db_lock语句的作用是将“正在访问临界区”的标志清除。故选择 C 选项。
转载请注明出处。