volatile int i = 1;
volatile变量在使用非原子操作i++时会有问题,那多线程中对i进行其它运算会有问题吗?比如:
- 重新赋值 i = 2;
- i = i + 2;
主要是我对什么是原子操作不懂。
volatile int i = 1;
volatile变量在使用非原子操作i++时会有问题,那多线程中对i进行其它运算会有问题吗?比如:
主要是我对什么是原子操作不懂。
4 回答1.5k 阅读✓ 已解决
4 回答1.3k 阅读✓ 已解决
1 回答2.6k 阅读✓ 已解决
3 回答1.8k 阅读
2 回答769 阅读✓ 已解决
2 回答1.7k 阅读
2 回答1.3k 阅读
原子操作可以简单理解为一条汇编指令。我们平时写的 Python JAVA PHP 最终都是要编译才能执行的。如果一个操作对应多条汇编指令比如 1 和 2, 那么 CPU 可能在执行完 1 之后因为时间片到了要去执行其他的程序,这里就不是一个原子操作。