单选题
1分
有如下银行存款的程序int deposit(id, int c)  ...
有如下银行存款的程序
int deposit(id, int c) //存款例程,id是用户号,c为存入现金额
{ int n;
while TS(&lock); // Test-and-Set指令
n = fetch(balance); //从主服务器取存款余额
n = n + c; //存款余额加存入现金额
send(n); //送回新余额
lock = FALSE; //置标志为F
output(n); //打印余额凭条
}
上述程序中,while TS(&lock)指令的作用是( )。
int deposit(id, int c) //存款例程,id是用户号,c为存入现金额
{ int n;
while TS(&lock); // Test-and-Set指令
n = fetch(balance); //从主服务器取存款余额
n = n + c; //存款余额加存入现金额
send(n); //送回新余额
lock = FALSE; //置标志为F
output(n); //打印余额凭条
}
上述程序中,while TS(&lock)指令的作用是( )。
参考答案: A
参考解析: 【解析】对存款余额的修改必须是互斥的,所以读余额并修改余额的那段代码(即n = fetch(balance);n = n + c;send(n); )为临界区,临界区之前是进入区(即while TS(&lock)),作用是检查临界资源是否正被访问,如果资源空闲,则此进程可以进入临界区获得临界资源使用权利,并设置一个“被访问标识”;当进程使用完资源要退出临界区时,就要执行退出区代码,用于将“被访问标识”清除。 退出区之后的部分是剩余区。故选择A选项。