单核CPU多线程存在线程安全问题吗?

  1. 非原子操作还是会存在线程安全问题,比如2个线程对变量a进行自增操作,每个线程自增10次。可能会重排序出现下列情况:
    1. 线程1读a;
    2. 线程2读a;
    3. 线程1写a;
    4. 线程2写a;
  2. 此时,2个线程对a写了2次,但a的值只+1,出现线程不安全问题。

单核CPU多线程存在可见性问题吗?

  • 不存在可见性问题
    • 多线程在单个CPU上使用的是同一个工作内存区域,在单核CPU上,无论创建了多少个线程,同一时刻只会有一个线程能够获取到CPU的资源来执行任务,即使这个单核的CPU已经添加了缓存。这些线程都是运行在同一个CPU上,操作的是同一个CPU的缓存,只要其中一个线程修改了共享变量的值,那另外的线程就一定能够访问到修改后的变量值

static_9QVKCe75415uPGW4aRxpkk_image