當前位置: 妍妍網 > 碼農

一張圖讀懂並行/並列/異步的區別

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]