深入理解计算机科学中的两个核心概念
指系统能管理多个任务在重叠时间段内交替执行,但不一定同时执行。其核心是任务处理的逻辑结构,通过上下文切换(如时间片轮转)在单个处理单元上模拟"同时执行"的假象。
例:单核CPU上运行多个线程,系统快速切换任务,用户感知为"同时运行"。
指系统物理上同时执行多个任务,需依赖多个处理单元(如多核CPU、分布式节点)。其目标是提升吞吐量和计算效率。
例:多核CPU同时处理独立任务(如视频编码的不同帧)。
并发是程序结构的设计模式(处理多任务的能力),并行是运行时状态(任务物理同时执行)。
Rob Pike(Go语言设计者)的经典总结:
"Concurrency is about dealing with lots of things at once. Parallelism is about doing lots of things at once."
并行任务通常需相互独立(无数据依赖),而并发任务可存在依赖关系(通过锁/通信协调)。
并行因同时执行任务,速度通常快于并发(明确对比),但并发在I/O密集型场景更高效(避免CPU空转)。
"并发是并行的子集"
❌ 错误观点
✓ 正确理解: 两者正交:程序可并发但不并行(单核多线程)或并行但不并发(多核处理单一任务的分片)。
"多线程一定更快"
❌ 错误观点
✓ 正确理解: 线程切换有开销,并行未必总优于并发。
并发是任务管理的抽象方法,解决系统响应能力;并行是资源扩展的物理手段,解决计算效率。实际系统常结合使用(如并发的多线程在并行多核上运行)。
并发与并行:概念解析
并发 (Concurrency)
并行 (Parallelism)
特性
并发
并行
硬件依赖
可在单核/单CPU实现(通过时间片切换)
必须多核/多CPU/分布式系统
执行方式
任务交替推进(Interleaving)
任务真正同时执行
性能目标
减少延迟、提高响应性(如UI不阻塞)
最大化吞吐量、缩短计算时间
典型技术
线程/协程切换、异步I/O
多进程、GPU计算、MapReduce
设计 vs 执行
独立性要求
性能表现
并发适用
并行适用
深入理解计算机科学中的两个核心概念:并发与并行
作者:zvvq博客网
免责声明:本文来源于网络,如有侵权请联系我们!