並發編程與 GMP 模型
Goroutine、Channel、GMP 調度模型深度解析。
🚀 Goroutine 與調度
GMP 模型
協程對比
📡 並發機制
Channel 與同步
- Go 併發 - Goroutine 與 Channel
- Go 並行機制完整指南
鎖機制
💡 GMP 模型詳解
核心組件
-
G (Goroutine)
- 輕量級線程
- 2KB 初始棧
- 動態擴縮容
-
M (Machine)
- OS 線程
- 執行 Goroutine
- 綁定到 P
-
P (Processor)
- 邏輯處理器
- 本地運行隊列
- GOMAXPROCS 控制數量
調度策略
-
Work Stealing
- 從其他 P 偷取任務
- 負載均衡
-
Hand Off
- M 阻塞時交出 P
- 保持並發度
-
搶占式調度
- 基於信號的搶占
- 防止長時間佔用
🔒 並發同步
Channel 模式
-
無緩衝 Channel
- 同步通訊
- 阻塞發送/接收
-
緩衝 Channel
- 異步通訊
- 容量控制
-
Select
- 多路複用
- 超時控制
鎖的使用
-
Mutex
- 互斥鎖
- 保護共享資源
-
RWMutex
- 讀寫鎖
- 讀多寫少場景
最後更新: 2025-12-01