後端語言 基礎
並發(Concurrency)與平行(Parallelism)的差異是什麼?
並發 vs 平行
定義
並發(Concurrency) 多個任務「看起來」同時進行,但可能交替執行(單核心也能做到)
- 關注:任務的管理與切換
- 例:一個廚師同時處理多道菜(切換注意力)
平行(Parallelism) 多個任務「真正地」同時執行(需要多核心)
- 關注:實際同時運算
- 例:多個廚師各自做一道菜
關係
- 平行是並發的子集:可以並發但不平行,不能平行但不並發
- 並發是設計問題,平行是硬體問題
各語言/框架的實作
| 語言/框架 | 並發機制 | 真平行 |
|---|---|---|
| Node.js | Event Loop + async/await | Worker Threads |
| Python | asyncio / threading | multiprocessing |
| Go | Goroutines + Channels | 是(GOMAXPROCS) |
| Java | Threads | 是 |
| Rust | async/await + tokio | 是 |
面試加分:Rob Pike(Go 語言設計者)名言:「Concurrency is about dealing with lots of things at once. Parallelism is about doing lots of things at once.」
✦ AI 模擬面試
輸入你的答案,AI 即時分析精準度與改進空間
登入後即可使用 AI 評分
