并发编程:概念、动机与架构解析
1. 并发、并行与分布式的区别
在编程领域,并发、并行和分布式是三个重要的概念,它们之间存在着明显的区别。
- 并发 :指的是一个系统中两个或多个任务可能同时处于执行状态(执行点不可预测)。例如,在一个服务器程序中,可能同时处理多个客户端的请求。需要注意的是,协程不属于并发,因为在任何给定时间,除了一个协程外,其他协程都在已知的位置停止。
- 并行 :如果一个并发系统中多个任务可以同时物理上处于活跃状态,那么这个系统就是并行的,这需要多个处理器。从语义角度看,真正的并行和在不可预测时间切换任务的“准并行”没有区别。
- 分布式 :当并行系统的处理器与现实世界中物理上相互分离的人或设备相关联时,这个系统就是分布式的。
简单来说,“并发”涵盖了上述三种情况的动机;“并行”适用于利用并行硬件和应对物理分布这两种情况;“分布式”仅适用于应对物理分布的情况。
2. 并发的动机
人们编写并发程序主要有以下三个重要动机:
- 捕捉问题的逻辑结构 :许多程序,特别是服务器和图形应用程序,需要同时跟踪多个基本独立的“任务”。将每个任务用单独的控制线程表示,是构建这类程序最简单和最符合逻辑的方式。例如,在视频游戏中,需要同时处理键盘输入和更新屏幕图像。
- 利用并行硬件提高速度 :多核处理器和多处理器已经在桌面、笔记本和移动设备中普及。为了有效利用这些核心,程序通常需要以并发的方式编写或重写。
-
超级会员免费看
订阅专栏 解锁全文
1117

被折叠的 条评论
为什么被折叠?



