面试官:你来说说并发和并行是一回事吗?

524次阅读  |  发布于7月以前

并发不是并行!

在系统设计中,理解并发与并行之间的区别非常重要。

正如 Rob Pyke(GoLang 的创建者之一)所说:"并发是指同时处理很多事情,并行性是指很多事情同时进行"。

Concurrency is about dealing with lots of things at once. Parallelism is about doing lots of things at once.

这一区别强调了并发性更多地是关于程序的设计,而并行性则是关于执行

并发是指同时处理多件事情。它涉及到如何构建程序以同时处理多个任务,这些任务可以在重叠的时间段内启动、运行和完成,但不一定是在同一时刻。

并发性是独立执行进程的组合,它描述了程序管理多个任务的能力,即在不一定要完成一个任务的情况下,同时启动另一个任务。

并行则是指同时执行多个计算。它是一种同时运行两个或多个任务或计算的技术,利用计算机中的多个处理器或内核来同时执行多个操作。并行化要求硬件具有多个处理单元,其主要目标是提高系统的吞吐量和计算速度。

在实际应用中,并发可以使程序对输入保持响应,执行后台任务,并以看似同步的方式处理多个操作,即使在单核处理器上也是如此。它在 I/O 资源限制和高延迟操作中尤其有用,在这些操作中,程序需要等待外部事件,如文件、网络或用户交互。

并行化能同时执行多个操作,在计算速度和吞吐量成为瓶颈的 CPU 资源限制任务中至关重要。需要进行繁重数学计算、数据分析、图像处理和实时处理的应用程序都能从并行执行中大大受益。

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8