简介

  • 并发编程领域可以分成三个核心问题:
    • 分工
    • image.png
    • 同步
    • image.png
    • 互斥
    • image.png
  • 管程是解决并发问题的万能钥匙

    第一部分-可见性、原子性和有序性问题

    概念

    首先介绍三个定义的概念

  • 可见性-一个线程对共享变量的修改,另一个变量能够立即看到称之为可见性

    • 如今的多核时代,当不同的线程在不同的cpu上进行一个操作的时候,就会在成缓存一致性的问题。造成这个问题的原因就是线程之间的可见性。
    • 例如在线程要修改一个数值的时候,为了最大化的利用cpu的性能,需要先把主存中的数值取到cpu的高速缓存中,进行操作。如果是多个cpu同时修改一个数值就会造成最后的结果不一致的问题;
  • 原子性
  • 有序性