其实线程安全主要是集中在 CPU cache 的问题,因为 CPU cache 速度比内存要快,所以会从内存中复制一份数据到 CPU cache 中,运算完成之后再复制回内存。 所以如果是单线程这样是没问题的,但是如果是多线程,就会出现一个时间差,比如两个线程先后复制到 CPU cache 中,但是计算完成后,再先后复制回内存。而这个时间差就会导致,一个线程计算的值不是另一个线程计算完成后的值,导致的线程不安全。 但 JS 也有《 SharedArrayBuffer API 提供 Atomics 对象,保证所有共享内存的操作都是“原子性”的。》--这句话引用自阮一峰的 ECMAScript 6 入门