A-A+
2 避免在循环中使用时栅栏的死锁 其代码如下所示 下面说法不正确的是(): local_sense=! local_sense; //local-sense取反 lock(counterlock); //确保更新的原子性 count++; //到达进程数加1 unlock(counterlock); //释放锁 if(count==total){ //进程全部到达 count=0; //重置计数器 release=local_sense; //释放进程 } else { //还有进程未到达
问题详情
2、避免在循环中使用时栅栏的死锁,其代码如下所示,下面说法不正确的是(): local_sense=! local_sense; //local-sense取反 lock(counterlock); //确保更新的原子性 count++; //到达进程数加1 unlock(counterlock); //释放锁 if(count==total){ //进程全部到达 count=0; //重置计数器 release=local_sense; //释放进程 } else { //还有进程未到达 spin(release
A.每个进程均使用一个私有变量local_sense,标记是进入栅栏还是离开栅栏;
B.每个进程均使用一个私有变量local_sense,该变量初始化为1;
C.每个进程均使用一个私有变量local_sense,每次执行栅栏操作时local_sense取反;
D.当进程离开栅栏时进行计数(和到达时一样),在上次栅栏使用中的所有进程离开之前,不允许任何进程重用并初始化本栅栏。
参考答案
使用打破循环等待条件(避免第一个线程等待其它线程,后者又在等待第一个线程)的方法不能避免线程死锁