1. 平行 (Parallel)

  • 概念:指多個任務在同一時間真正地同時執行。需要硬體支持,比如多核處理器,每個核心可以同時處理不同的任務。
  • 特點
    • 必須有多個物理處理單元(例如 CPU 核心)。
    • 通常用於計算密集型任務,如科學計算、大數據處理等。
    • 範例:圖像處理中,同時處理多個像素或區塊。
  • 關鍵詞:真正的“同時”。

2. 併發 (Concurrent)

  • 概念:指多個任務在邏輯上同時進行,但並不一定是物理上的同時進行。任務可能交替執行,依賴於調度機制。
  • 特點
    • 並行不要求多核處理器。
    • 通常用於 I/O 密集型任務(如網絡請求、文件讀寫),藉助時間分片來切換任務。
    • 範例:多人輪流在同一部電腦上打字。
  • 關鍵詞:邏輯上的“同時”。

3. 分散 (Distributed)

  • 概念:指多個任務分布在多個不同的計算節點上協同完成工作,這些節點通常是通過網絡連接的。
  • 特點
    • 涉及多台物理機器。
    • 節點之間通過通信協議(如 HTTP、gRPC)進行協作。
    • 範例:Hadoop、Spark 等大數據框架。
  • 關鍵詞:多機器、分布式系統。

4. 異步 (Asynchronous)

  • 概念:指在任務執行時,不需要等待當前任務完成,主線程可以繼續執行其他任務,等結果準備好後再處理。
  • 特點
    • 適合處理高延遲的 I/O 操作。
    • 通常用回調函數、Promise 或 async/await 模式來實現。
    • 範例:發起一個網絡請求後,繼續執行其他代碼,網絡響應返回時再處理。
  • 關鍵詞:非阻塞、回調、事件驅動。

5. 線程 (Thread)

  • 概念:是操作系統分配 CPU 資源的基本單位,每個線程都在進程內運行,共享進程的內存空間。
  • 特點
    • 多線程在同一進程內執行。
    • 線程之間共享內存資源,但也容易引發競爭條件。
    • 範例:在一個應用程式中,同時執行文件下載和數據分析。
  • 關鍵詞:共享內存、輕量級。

6. 進程 (Process)

  • 概念:是操作系統分配資源的基本單位,每個進程有自己獨立的內存空間。
  • 特點
    • 不同進程之間的內存是隔離的,通過 IPC(如管道、共享內存)進行通信。
    • 範例:在一台電腦上,同時運行瀏覽器和文檔編輯器。
  • 關鍵詞:獨立內存、重量級。

比較總結

特性 平行 (Parallel) 並行 (Concurrent) 分散 (Distributed) 異步 (Asynchronous) 線程 (Thread) 進程 (Process)
同時性 真正的同時執行 邏輯上的同時執行 節點間協同執行 非阻塞執行 多線程共享內存並行執行 多進程獨立內存並行執行
硬體要求 多核處理器 無需多核 多台機器 無需多核 單機多核 單機或多機(分布式)
資源共享 有(同一台設備) 依情況 依情況 共享內存 獨立內存
使用場景 高性能計算 I/O 密集 分布式數據處理 高延遲操作 輕量級並行 重量級隔離和獨立進程控制

關係與區分