单核CPU的线程安全问题
单核CPU多线程存在线程安全问题吗?
- 非原子操作还是会存在线程安全问题,比如2个线程对变量a进行自增操作,每个线程自增10次。可能会重排序出现下列情况:
- 线程1读a;
- 线程2读a;
- 线程1写a;
- 线程2写a;
- 此时,2个线程对a写了2次,但a的值只+1,出现线程不安全问题。
单核CPU多线程存在可见性问题吗?
- 不存在可见性问题
- 多线程在单个CPU上使用的是同一个工作内存区域,在单核CPU上,无论创建了多少个线程,同一时刻只会有一个线程能够获取到CPU的资源来执行任务,即使这个单核的CPU已经添加了缓存。这些线程都是运行在同一个CPU上,操作的是同一个CPU的缓存,只要其中一个线程修改了共享变量的值,那另外的线程就一定能够访问到修改后的变量值。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 HumgTop's Blog!
评论