**可见性、原子性、有序性是并发编程中经常提到的名词,如果能保证这三个条件,我们的程序就是线程安全的。**反之,则会存在各种诡异的BUG。
**为什么会有并发编程?**核心问题在于CPU、内存、I/O设备速度的差异,而为了平衡三者的速度差异,计算机体系结构、操作系统、编译程序做出了这些贡献:
-
操作系统增加了进程、线程来分时复用CPU。解决CPU与I/O设备的速度差异。
-
CPU增加了缓存。解决CPU与内存速度差异。
-
编译程序优化指令执行次序。这样可以更有效地利用缓存。
2025/10/10大约 13 分钟