進程 vs 執行緒
| 概念 | 進程 | 執行緒 |
| 定義 | 執行中程式 + 記憶體空間 + 系統資源 | 進程內單一執行流,擁有專屬暫存器/堆疊 |
| 代碼區 | 獨立 | 共享 (同進程執行緒共用代碼區) |
| 最小數量 | 1 | 每進程至少 1 執行緒 (主執行緒) |
多執行緒優點
- 提升 CPU 利用率:一執行緒等待 I/O 時,CPU 切換執行其他執行緒。
- 改善回應性:UI 執行緒專職繪圖/事件,耗時工作交給背景執行緒。
- 簡化模型:將複雜非同步邏輯拆解為多個循序執行緒。
多執行緒缺點與成本
- 記憶體佔用:每執行緒預設 1MB 堆疊空間。
- CPU 切換開銷:上下文切換、排程器追蹤。
- 共享資源競爭:需同步機制 (lock、Semaphore),易產生死結、飢餓。
- 複雜度爆炸:執行緒過多導致除錯困難、Bug 隱蔽。
公司比喻
- 進程 = 公司
- 執行緒 = 員工
- 單執行緒 = 一人公司,效率低、無法擴展
- 過多執行緒 = 員工過多,管理成本高、內耗嚴重
- 適度多執行緒 = 專業分工、高效協作
本系列規劃
- 基本觀念 (本文)
- Thread 類別核心 API
- 執行緒同步與資料共享
- 執行緒狀態、優先權、前景/背景
- 生產者消費者、Timer、ThreadPool
- 非同步模式 (APM/EAP/TAP)、async/await
所有範例採用 Console 應用程式,專注核心邏輯,避免 UI 干擾。程式末尾 Console.ReadLine() 讓輸出停留便於觀察。
- 上一篇文章: C# 多執行緒機制探索(二):Thread 類別核心 API 與第一個執行緒程式
- 下一篇文章: C# 發現之旅:高效能 ASP.NET TreeView 控制項 (上) — RenderContents 核心渲染邏輯
Copyright ©
程式碼之家 All Rights Reserved