原子操作假设下,判断两个进程是否违反互斥性?
双进程互斥性验证问题
假设所有操作均为原子操作,现需验证以下两个进程是否能维护互斥性。初始变量定义:int ba = 0, int bt = 0。
进程D的代码
while(true) { D1: non critical section D2a: if (bt == -1) { // 注:原代码疑似笔误,将判断运算符`==`写为赋值`=`,此处修正为逻辑判断 D2b: ba = -1; } else { ba = 1; } D3: while (ba == bt) {} D4: critical section D5: ba = 0; }
进程E的代码
while(true) { E1: non critical section E2a: if (ba == -1) { // 注:原代码疑似笔误,将判断运算符`==`写为赋值`=`,此处修正为逻辑判断 E2b: bt = 1; } else { bt = -1; } E3: while (bt == -ba) {} E4: critical section E5: bt = 0; }
我已尝试多种执行顺序(如D1→D2c后执行E1→E2c等),均未发现互斥性被违反的情况,但怀疑是否存在遗漏的执行场景。
内容的提问来源于stack exchange,提问作者sharkey101
相关产品推荐
相关产品推荐

