本帖最后由 bullfrog 于 2014-9-1 17:02 编辑
对啊,但是情况如下:
num =19; flag=19;
t1进入while循环,flag自增1,此时num没有自增,CPU切换到t2,同样满足条件进入while循环;
接下来,t2使flag自增1;这个时候 flag = 21;
但是; t1, t2还没执行完啊,下面的 num++在两条线都是一定会执行的,不是吗?也就是两次num++;
那么最终 num 应该是21啊?可是我试验那么多次,没有出现这种情况。
其实说到底就是,flag++这行语句与num++这行语句执行的次数应该是一样的,而它们的初始值又相同,怎么会最后结果不一样呢。
|