使用代码段的竞争条件

时间:2016-03-04 10:15:10

标签: operating-system

请帮我解决这个问题的想法。我已经尝试了几个序列来竞争条件,但我找不到正确的。 每次x的值都相同时。

enter image description here

这是我试过的方式

enter image description here

1 个答案:

答案 0 :(得分:1)

假设一条线不被视为原子操作,您可以将基于其自身值修改x的任何线拆分为读取写入< / em>部分。只对一个人执行此操作,例如从increase函数执行此操作,产生:

y = 5;
int temporary = x; // read value
temporary += y;
x = temporary; // write modified value back
x++; // this could be split up similarly
z = /* whatever */;

使用这个“扩展”代码序列,您可以毫无困难地查找具有x不同结果值的操作序列。