Course Code:
cpp14multith
Duration:
28 hours
Prerequisites:
- 能夠在 GNU/Linux 和/或 MS Windows 環境中使用 C++ 構建軟體的工具
- 瞭解高級和中級水準的 C++(過程和面向物件範式)中的程式設計問題
- 通用代碼開發知識(樣本)
Overview:
該培訓面向在日常工作中使用高級和中級語言 C++ 的程式師。該課程側重於介紹與多線程程式設計和構建應用程式架構相關的問題,從其結構開始,到開發過程的技術方面(測試、調試)結束。該課程涵蓋了理論和實踐問題,這些知識使你能夠估計未來應用的性能和穩定性。多線程設計模式的應用範圍和經典模式中的同步問題 GoF. C++14 語言標準也被作為基本標準提出。但是,這些問題還包括較新的語言標準(最高 C++2a)。此外,還討論了與GNU/Linux操作系統合作的問題,以及標準庫和Boost庫的實現差異。
使用的教學資源:
- 通過測驗進行講座以檢查知識
- 互動練習
- 填寫委託代碼
- 簡單的DIY代碼開發(從頭開始)
- 微觀設計
Course Outline:
併發挑戰和問題
- 平台硬體限制 - 硬體線程、管道、緩存一致性
- Element與多線程程式設計相關的其他概念(多線程程序的正確性、可行性、饑餓性、死鎖、種族、原子性、相幹性模型、弗林分類法)
- C++ 中可用於實現多線程和多處理的機制
- 標準庫實現 - 專案 C++14 至今 (C++2a)
- Boost 中可用的實現 - 與標準庫的區別
進程和線程
- 多進程應用程式與多線程應用程式
- 作業系統與線程(可用實現的簡要概述)
- 進程和線程同步機制
- 同步的結構化實現
- 在面向物件的方法中實現多線程的特殊性(RAII 模式的作用)
語言中的記憶模型 C++
- 對象和記憶體位置
- 計劃和實施
- 關係:同步、前、原子操作的排序操作、發佈序列
- 記憶體障礙
- 原子操作
標準 C++14 及更高版本中的線程管理
- std::thread 類和起始線程
- 螺紋識別
- 連接和拆卸螺紋
- 線程與標準容器
- 處理線程中的異常 C++14
互斥和關鍵部分
- 相互排斥的簡單規則
- 可用阻塞物件的概念(類型)
- C++14 中時間處理的快速介紹(計時庫)
- 類 std::mutex、std::timed_mutex、std::shared_mutex 和派生
- 鎖處理中的 RAII 模式(標準::lock_guard、標準::unique_lock)
- 從屬鎖和延遲鎖 (std::lock)
- 鎖和線程的擁有權和共同擁有權
- 讀者-作家的問題
- 單次初始化
- 線程的本地(專用)記憶體 (std::thread_local)
線程鎖定和同步
- 信號量操作
- 遞歸鎖
- 具有阻塞級別定義的鎖
- 決策變數和鎖定配合
- 實現空閒等待、繁忙等待
- 恢復線程
- 線程之間的通信(Actor 和 CSP 模型)Communication between threads (Actor and CSP model)
異步任務
- 異步事件及其處理
- 前途
- 承諾
- 準備的任務 (packaged_task)
原子類型
- 標準原子類型
- 通用原子標誌 (std::atomic_flag)
- std::atomic<T> 類範本及其專用化
- std::atomic 類型的實用函數(免費)
多線程 API 設計的細節
- 設計帶聯鎖裝置的結構 - 粗粒度和細粒度聯鎖裝置
- 併發代碼性能 - 估計和測量技術
- 數據分區
- 解決方案的可擴充性
- 處理應用程式體系結構中的錯誤和異常
測試和調試多線程應用程式
- 多線程操作的代碼評審
- 多線程應用程式測試的細節
- 單元測試
- 增加緊急情況的可能性,有利於檢測
- 測試多線程應用程式的形式化方法
- 多線程應用程式體系結構模式以及測試和調試(概述)
高級線程管理
- 相關線程(Saga 模式)
- 避免數據訪問方面的競爭
- 受控螺紋停止和中止
- 中斷阻止呼叫
- 中斷處理
- 竊取任務
- 應用程式終止時中斷任務
多線程設計模式
- 多線程模式的類型和用途
- 標準的適用範圍
- 線程池
- 活動物件模式
- 多線程線程安全佇列
- 生產者消費者模式
- 監視器模式
- 多線程模式安全 GoF
Sites Published: