課程簡介
併發挑戰和問題
- 平台硬體限制 - 硬體線程、管道、緩存一致性
- 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++(過程和面向物件範式)中的程式設計問題
- 通用代碼開發知識(樣本)
客戶評論 (5)
一般課程資訊
Paulo Gouveia - EID
Course - C/C++ Secure Coding
機器翻譯
Enjoyed the flexibility and variety of topics, the combination of trainings and exercises meant that I could apply what I'd learnt straight away. I also enjoyed the projects on the last day to bring everything together.
Luca Ricagni - Rockwell Collins UK Limited
Course - Advanced C++
我喜歡被淹沒在 C++ 語言中 5 天 - 沒有被常規工作打斷 - 連續很多......就我個人而言,我沒有同事那樣有 C++ 的經驗,我決定參加這門課程進行深入研究。潛水極大地激發了我瞭解更多......這正是我想要實現的目標。 我很欣賞培訓師和同事們的專業知識。事實上,主題很快就被觸及了,但沒有詳細解決,這是我對高級課程的期望。有時對我來說太快了(但這是我加入這門課程的一個已知和公認的缺點:-))......但另一方面,它為我提供了對語言微妙之處的相當完整的概述。 非常感謝您以這種方式介紹課程!非常感謝!!
Jan Grauwen - Septentrio N.V.
Course - Advanced C++ Software Design
機器翻譯
Interactivity, time for self-contained programming. I learn easier if I have the chance to find out the answer and not just telling me it. It was also a very good thing that the training was well-planned, we kept coffee pauses and the training did not lose my attention. The trainer had very deep knowledge in C++, we felt we could ask anything.
Barna Szecsi - GIS Europe SE
Course - C++ for Embedded Systems
The details on how compiler behaves depending on to the syntax usage. The "Quiz" sections are very stimulating