Overview
- 來源:《C++ Concurrency in Action, 2nd Edition》(Anthony Williams 著,陳曉偉譯,簡中版 v0.2),依 C++14/C++17 標準更新。
- 本 vault 涵蓋第 1–11 章與附錄 A–C;附錄 D(API 參考)列入 non-core policy。
- 建議學習路徑:第 1–4 章(基礎)→ 第 5 章(記憶體模型,第 7 章的前置)→ 第 6–7 章(資料結構)→ 第 8–10 章(設計與演算法)→ 第 11 章(測試除錯)。
- 主題重要度:第 3、4、5 章為面試與實務核心;第 7 章難度最高且依賴第 5 章。
Topic Map
| Section |
Source |
Notes |
Status |
| 併發基礎 |
第1章 (pp. 13–24) |
何謂併發, 為什麼使用併發, C++ 併發支援與首個程式 |
[ ] |
| 執行緒管理 |
第2章 (pp. 24–44) |
啟動與等待執行緒, 傳遞參數與轉移所有權, 執行緒數量與標識 |
[ ] |
| 共享資料 |
第3章 (pp. 44–75) |
競爭條件與互斥鎖, 死結與鎖管理, 其他資料保護方式 |
[ ] |
| 同步操作 |
第4章 (pp. 75–124) |
條件變數與執行緒安全佇列, Future 與非同步任務, 限時等待, 函數式與訊息傳遞風格, 持續性、Latch 與 Barrier |
[ ] |
| 記憶體模型與原子操作 |
第5章 (pp. 124–165) |
記憶體模型基礎, 原子型別與操作, 同步發生與先行發生, 記憶體順序選項, 釋放序列與柵欄 |
[ ] |
| 基於鎖的資料結構 |
第6章 (pp. 165–199) |
併發設計指南, 執行緒安全棧與佇列, 細粒度鎖佇列, 查詢表與鏈結串列 |
[ ] |
| 無鎖資料結構 |
第7章 (pp. 199–246) |
無鎖概念與取捨, 無鎖棧, 記憶體回收策略, 無鎖佇列與記憶體順序, 無鎖設計指導建議 |
[ ] |
| 併發設計 |
第8章 (pp. 246–292) |
執行緒間劃分工作, 影響性能的因素, 為性能設計資料結構, 異常安全與可擴展性, 平行演算法案例 |
[ ] |
| 進階執行緒管理 |
第9章 (pp. 292–322) |
執行緒池, 工作竊取與佇列爭用, 中斷執行緒 |
[ ] |
| 平行演算法 |
第10章 (pp. 322–335) |
執行策略, 使用平行演算法 |
[ ] |
| 測試與除錯 |
第11章 (pp. 335–347) |
併發 Bug 類型, 定位與測試併發 Bug |
[ ] |
| 附錄 |
附錄A–C (pp. 348–402) |
C++11 語言特性, 併發庫對比, ATM 訊息傳遞範例 |
[ ] |
Practice Notes
| Tool |
Description |
Link |
| Exam Traps |
常見錯誤與陷阱總整理 |
面試陷阱題 |
| Quick Reference |
全書速查表(API、公式、比較表) |
速查表 |
Tag Index
Tag rules:層級為 top → domain → detail → note-type;標籤一律英文小寫 kebab-case;僅允許本註冊表內的標籤;detail 標籤必須與其父 domain 標籤同時出現;每個筆記至少含 cpp-concurrency + 一個 note-type + 一個 domain 標籤。
Weak Areas
Non-core Topic Policy
| Source |
Content |
Handling |
| 附錄D (pp. 402–542) |
C++ 執行緒庫逐條 API 參考(chrono、condition_variable、atomic、future、mutex、ratio、thread 標頭) |
Excluded — 純 API 參考資料,無概念性內容;關鍵 API 已整併入 速查表 與各概念筆記 |
| 前言、致謝、關於本書/作者/封面 (pp. 1–13) |
出版資訊與導讀 |
Excluded — 非學術內容 |
| 附錄C 完整程式碼清單 |
ATM 範例之完整原始碼 |
Summarized — 僅整理架構與訊息流於 ATM 訊息傳遞範例,不逐行收錄 |