如果我有两个线程,
一个线程会执行 x++;
一个线程会执行 x--;
这种情况应该没什么争议,应该把代码修改成原子操作。我想问下面这种情况是否要进行原子操作:
两个线程,
一个线程会执行 x += n;
一个线程会判断 if( x - y > z ) ...
这种情况是否要修改成原子操作?我认为不用,x无非就是之前的值,或者+n后的值,不会影响我程序的逻辑。
x可能会出现其它乱七八糟的值吗?
一个线程会执行 x++;
一个线程会执行 x--;
这种情况应该没什么争议,应该把代码修改成原子操作。我想问下面这种情况是否要进行原子操作:
两个线程,
一个线程会执行 x += n;
一个线程会判断 if( x - y > z ) ...
这种情况是否要修改成原子操作?我认为不用,x无非就是之前的值,或者+n后的值,不会影响我程序的逻辑。
x可能会出现其它乱七八糟的值吗?
只不过 if( x - y > z )时也许条件成立,但执行到里面的代码时,条件就不成立了,或者相反
可以参考这个网页。
另外一个网页找不到了。为安全起见,还是加吧。省得出问题的时侯……