1.1 什么是并发
并发:指两个或更多独立的活动同时发生。并发在生活中随处可见。我们可以一边走路一边说话,也可以两只手同时做不同的动作。
1.1.1 计算机系统中的并发
当我们提到计算机术语的“并发”,指的是在单个系统里同时执行多个独立的活动,而不是顺序地或是一个接一个地。 这并不是一种新的现象,多任务操作系统通过任务切换允许一台计算机在同一时间运行多个应用程序已司空见惯多年,一些高端的多任务处理服务器实现并发控制的历史更久远。真正有新意的是增加计算机真正并行运行多任务的普遍性,而不只是给人这种错觉。
以前,大多数计算机都有一个处理器,具有单个处理单元或核心,至今许多台式机器仍是这样。这种计算机在某一时刻只可以真正执行一个任务,但它可以每秒切换任务许多次。通过做一点这个任务然后再做一点别的任务,看起来像是任务在并行发生。这就是任务切换(task switching)。 我们仍然将这样的系统称为并发(concurrency), 因为任务切换得太快,以至于无法分辨任务在何时会被暂挂而切换到另一个任务。 任务切换给用户和应用程序本身造成了一种并发的假象。由于这只是并发的假象,当应用程序执行在单处理器任务切换环境下,与在真正的并发环境下执行相比,其行为还是有着微妙的不同。特别地,对内存模型不正确的假设(参见第5章)在这样的环境中可能不会出现。这将在第10章中作深人讨论。
包含多个处理器的计算机用于服务器和高性能计算任务已有多年,现在基于单个芯片上具有多于一个核心的处理器(多核心处理器)的计算机也成为越来越常见的台式机器。无论它们拥有多个处理器或一个多核处理器(或两者兼具),这些计算机能够真正的并行运行超过一个任务。我们才称之为