| Erlang 概念 | C++ 映射設計 | 關鍵技術點 |
|---|---|---|
| Process (輕量進程) | 協程 + 執行緒池 | C++20 coroutine / Boost.Coroutine / libco / 自製上下文切換 |
| Named Process | 註冊表 (Registry) + 原子操作 | 字串名稱 → Process ID 映射,支援熱更新、故障轉移 |
| Mailbox | 無鎖佇列 (MPSC/SPSC) | lock-free ring buffer / boost::lockfree::spsc_queue / moodycamel::ConcurrentQueue |
| Timer | 時間輪 / 最小堆定時器 | 單獨定時器執行緒,O(1) 插入/刪除,支援百萬級定時器 |
| Encode/Decode | 序列化框架 | Protobuf / FlatBuffers / MessagePack / 自定義二進位協議 |
| Send/Receive | 非同步投遞 + 選擇性接收 | 模式匹配 → C++ variant/visitor 或 繼承虛函數分發 |
| Link/Monitor | 雙向/單向生命週期綁定 | Process 死亡通知機制,weak_ptr 觀察者模式 |
| Fail Fast | RAII + 例外安全 + Supervisor 策略 | 資源綁定生命週期,異常向上傳播至監督者,自動重啟/升級 |
| Generic Server | Actor 框架基類 | 處理同步呼叫 (call)、非同步投遞 (cast)、狀態機循環 |
std::shared_ptr<Message> 或序列化緩衝區所有權轉移。yield 讓出協程,避免忙等待。one_for_one, rest_for_one, one_for_all 重啟策略。在 C++ 重構 Erlang 並行模型是可行且具工程價值的。關鍵在於**協程調度器、無鎖郵箱、監督樹**三大基礎設施的穩健實現。建議優先評估 CAF 等成熟庫,若需深度定製再自行構建核心組件。