boolean TS(boolean *lock){ //lock为资源的状态(指令的执行过程不可分割,即为一条原语)
boolean old;
old=*lock;
*lock=TRUE; //lock的初始值为false,即临界区空闲,进程进入临界区,将TRUE赋予lock,临界区正被访问
return old;
}
do{
while TS(&lock); //进入区
//当lock一直为TRUE时继续while循环测试,当lock为false(即进程执行结束,临界区空闲),下一个进程可以进入
critical section; //临界区
lock=FALSE; //退出区
remainder section; //剩余区
}while(TRUE);
Test-and-Set指令
于 2021-10-07 23:45:53 首次发布