課程簡介

併發挑戰和問題

  • 平台硬體限制 - 硬體線程、管道、緩存一致性
  • 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 

最低要求

  • 能夠在 GNU/Linux 和/或 MS Windows 環境中使用 C++ 構建軟體的工具
  • 瞭解高級和中級水準的 C++(過程和面向物件範式)中的程式設計問題
  • 通用代碼開發知識(樣本) 
 28 時間:

客戶評論 (5)

課程分類