在并发编程Bug源头中介绍过,原子问题的源头是线程切换,解决方案禁用线程切换。
CPU控制线程切换,无论单核CPU还是多核CPU,保证同一时刻只有一个线程执行,称为互斥,就能够保证对共享变量的修改时互斥,就能保证原子性。
互斥的解决方案是锁,把一段需要互斥执行的代码称为临界区。