首先来个直观的记忆:
-
并发: 想像小丑在发球,同时有多个球在空中,但在同一时刻,每个手上只有一个球。
-
并行:就像军队队列一齐向前行进一样,同时存在多人向前走,多核才有并行的实现。
深入理解
一般上认为,如果两个操作“同时”发生,才称之为并发,然而事实上,操作是否在时间上重叠并不重要。而且由于分布式系统中复杂的时钟同步问题,现实当中,也很难严格确定它们是否同时发生。
为了更好地定义并发生,计算机系统中不依赖确切发生时间,即不管物理的时机如何,如果两个操作并不需要意识到对方,我们即可声称它们是并发操作。
更为专业的说话是,如果两个操作都不是彼此happened before在另一个操作之前,则属于并发