当前位置: 欣欣网 > 码农

一张图读懂并发/并行/异步的区别

2024-01-26码农

Erlang 编程语言的设计者 Joe Armstrong 曾经画过一张图,用来解释 Concurrency(并发)和 Parallelism(并行)的区别。

这张图很形象,我觉得它也可以用来解释这句话:Asynchrony(异步)和 Concurrency(并发)没有什么关系。

  • 并发(单个咖啡店,多个队列):服务员在多个队列之间轮流服务,尽管不能同时为所有队列服务,但通过快速切换,能有效管理多个任务。

  • 并行(多个咖啡店,各自队列):每个咖啡店有自己的服务员,能同时为各自队列的客人服务,实现真正的同时处理多个任务。

  • 异步(客人点单后可做其他事):客人点单后不必等待,而是可以做其他事情,比如阅读报纸或查看手机,当咖啡准备好后,服务员会通知你,你可以过来取咖啡。这种方式允许客人在等待期间最大限度地利用自己的时间。

  • 并发主要关注于任务的管理和调度。在并发环境中,可以同时处理多个任务,不论是通过时间片轮转在单核处理器上,还是在多核处理器上。

    异步主要关注于提高程序在等待(通常是 I/O 操作)期间的效率。异步允许程序在等待一个操作完成的同时继续执行其他代码,从而避免阻塞。

    异步编程本质上与并发(多任务同时进行)无关,而是关注于单个任务在等待时的处理方式。

    W WH 系列文章列表:

    [1]

    [2]

    [3]

    [4]

    [5]

    [6]

    最近文章列表:

    [1]

    [2]

    [3]

    [4]

    [5]

    [6] ?

    [7]

    [8]

    [9]

    [10]

    [11]

    [12]

    [13]