感謝您提交詢問!我們的一位團隊成員將在短時間內與您聯繫。
感謝您提交預訂!我們的一位團隊成員將在短時間內與您聯繫。
課程時長 28 時間:
課程簡介
並發性的挑戰與問題
- 平台硬體限制:硬體執行緒、管道、快取一致性
- 與多執行緒程式設計相關的基本概念(多執行緒程式正確性、活力、飢餓、死鎖、競爭條件、原子性、一致性模型、Flynn 分類法)
- C++ 中實現多執行緒和多處理可用的機制
- 標準庫的實現:從 C++14 到當前(C++2a)的元素
- Boost 中可用的實現:與標準庫的差異
進程和執行緒
- 多進程應用程式與多執行緒應用程式
- 作業系統與執行緒(對可用實現的簡短概述)
- 進程和執行緒的同步化機制
- 同步化的結構化實現
- 物件導向方法中多執行緒實現的特性(RAII 模式的角色)
C++ 中的記憶體模型
- 物件與記憶體位置
- 操作的排序及其強制
- 關係:同步化、先行關係、操作對原子行為的排序、釋放序列
- 記憶體屏障
- 原子操作
C++14 及更新版本中的執行緒管理
- std::thread 類及執行緒啟動
- 執行緒識別
- 附加和分離執行緒
- 執行緒與標準容器
- C++14 中執行緒的異常處理
互斥鎖定與臨界區
- 簡單的互斥原則
- 概念(可用鎖定物件的類型)
- C++14 時間處理的快速介紹(chrono 庫)
- std::mutex、std::timed_mutex、std::shared_mutex 類別及其衍生類別
- 鎖處理中的 RAII 模式(std::lock_guard、std::unique_lock)
- 依賴和延遲鎖定(std::lock)
- 鎖和執行緒的所有權與共同所有
- 讀者-作者問題
- 一次性初始化
- 執行緒本地(私有)記憶體(即 std::thread_local)
執行緒鎖定與同步
- 信號燈上的操作
- 遞迴鎖
- 具有鎖定層級定義的鎖
- 決策變數與鎖的合作
- 活躍屏障和閒置屏障的實現(Idle Waits、Busy Waits)
- 恢復執行緒運行
- 執行緒之間的通信(Actor 模型和 CSP)
非同步任務
- 非同步事件及其處理
- futues(未來)
- promises(承諾)
- packaged_task(打包任務)
原子類型
- 標準原子類型
- 通用原子旗標(std::atomic_flag)
- “std::atomic[T]”類模板及其特化
- std::atomic 類型的實用函數(自由函數)
多執行緒 API 設計的特定性
- 使用鎖設計結構:粗粒度和細粒度鎖定
- 並發程式碼的效能:估算和測量技術
- 資料分割
- 解決方案的擴展性
- 應用程式架構中的錯誤和異常情況處理
多執行緒應用程式的測試與除錯
- 從多執行緒操作角度進行程式碼審查
- 多執行緒應用程式測試的特定性
- 單元測試
- 增加意外情況發生概率以進行測試
- 多執行緒應用程式測試的形式化方法
- 多執行緒應用程式架構模式與測試和除錯(概述)
進階執行緒管理
- 依賴執行緒(Sagi 模式)
- 避免資料訪問競爭
- 受控停止和中斷執行緒
- 中斷阻塞調用
- 處理中斷
- 任務盜取
- 在應用程式結束期間中斷任務
多執行緒設計模式
- 多執行緒模式的類型和用途
- 模式應用範圍
- 執行緒池(Thread Pool)
- 活躍物件模式(Active Object)
- 安全的多執行緒隊列(Thread Safe Queue)
- 生產者-消費者模式(Producer Consumer)
- 監視器模式(Monitor)
- GoF 模式的安全性
最低要求
- 能夠使用 C++ 軟體建置工具,在 GNU/Linux 和/或 MS Windows 環境中操作。
- 掌握進階和中高階級別的 C++ 程式設計議題(包括程序式和物件導向範式)。
- 掌握泛型程式設計(模板)議題。
客戶評論 (1)
實際案例
Jan Kaniuka - SIEC BADAWCZA LUKASIEWICZ - PRZEMYSLOWY INSTYTUT AUTOMATYKI I POMIAROW PIAP
課程 - Programowanie wielowątkowe w języku C++
機器翻譯