同步就是一起發生吧

解决方案 »

  1.   

    说“一起发生”可能不太准确,事实上,对于单 CPU 的系统来说,没有什么事情是“一起发生”的。所谓“同步”,我是这么理解:比如线程 A,需要顺序做三件事(也可以说有三个时间点):(a)、(b)、(c)
    而线程 B 也有自己的三个时间点:(1)、(2)、(3)如果两个线程没有同步的话,这两个线程作为一个整体(就是整个程序)可能的执行顺序会是:
    (1) (2) (3) (a) (b) (c)
    (a) (1) (2) (3) (b) (c)
    (a) (b) (1) (2) (c) (3)
    ……以上都是“事实上可能出现的情况”,因为你的程序没有做任何“限制”(也就是同步处理)。现在,如果应用程序出于某项功能的考虑,要求 (2) 必须在 (b) 之后执行,那么你就要在线程 B 中做处理:如果 (1) 已经执行完,不要马上进入 (2),让它等到线程 A 中 (b) 执行完,再进入 (2)。这就是“同步”喽。以上说得比较罗嗦,简单讲,所谓“同步”,就是有目的地控制多个线程之间执行细节的时间顺序。