並行是指多個任務在同一時刻在多個處理器或者多核處理器上同時執行。併發是指多個任務在同一時間間隔內交替執行,但在任意時刻只有一個任務在執行。
並行需要硬體上的支援,而併發需要軟體上的支援。並行是物理上的同時發生,而併發是邏輯上的同時發生。
1. 定義
-
併發(Concurrency):
- 指在同一時間段內處理多個任務或事件。併發並不一定意味著這些任務是同時進行的,而是它們在時間上有重疊。
- 併發可以透過多執行緒、事件驅動程式設計或協作式多工來實現。在併發模型中,多個任務共享同一資源(如 CPU),並透過時間片輪轉來切換。
-
並行(Parallelism):
- 指同時執行多個任務或操作。並行意味著在物理上真正同時進行任務,通常依賴於多個處理器核心或多個計算裝置。
- 平行計算需要硬體支援(如多核 CPU),能夠真正同時處理多個計算任務。
2. 區別
特性 | 併發 | 並行 |
---|---|---|
執行方式 | 可能在同一時間段內執行多個任務,但不一定是同時執行 | 同時執行多個任務,真正的同時性 |
資源共享 | 多個任務共享資源,可能會出現資源競爭 | 任務之間的資源使用較少或經過合理分配 |
例子 | 多執行緒應用、非同步程式設計 | 多核處理器同時執行多個執行緒或任務 |
目的 | 提高程式的響應性或利用空閒時間 | 提高程式的計算速度和效能 |