volatile的一点疑问

volatile int i = 1;
volatile变量在使用非原子操作i++时会有问题,那多线程中对i进行其它运算会有问题吗?比如:

  • 重新赋值 i = 2;
  • i = i + 2;

主要是我对什么是原子操作不懂。

阅读 1.8k
1 个回答

原子操作可以简单理解为一条汇编指令。我们平时写的 Python JAVA PHP 最终都是要编译才能执行的。如果一个操作对应多条汇编指令比如 1 和 2, 那么 CPU 可能在执行完 1 之后因为时间片到了要去执行其他的程序,这里就不是一个原子操作。

参考资料 《深入浅出计算机组成原理
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题