第1節(jié)
前言
(1)總述以及基礎要求、開發(fā)環(huán)境
(2)簡要自我介紹和講課特點
(3)出這門課程的主要目的
(4)在vs2017中創(chuàng)建一個工程方便后續(xù)的課程講解
章節(jié)2
正式開講
第1節(jié)
并發(fā)基本概念及實現(xiàn),進程、線程基本概念
(1)并發(fā)、進程、線程的基本概念和綜述
(1.1)并發(fā)
(1.2)可執(zhí)行程序
(1.3)進程
(1.4)線程
(1.5)學習心得
(2)并發(fā)的實現(xiàn)方法
(2.1)多進程并發(fā)
(2.2)多線程并發(fā)
(2.3)總結(jié)
(3)C++11新標準線程庫
第2節(jié)
線程啟動、結(jié)束,創(chuàng)建線程多法、join,detach
(1)范例演示線程運行的開始和結(jié)束
(1.1)thread
(1.2)join()
(1.3)detach()
(1.4)joinable()
(2)其他創(chuàng)建線程的手法
(2.1)用類,以及一個問題范例
(2.2)用lambda表達式
第3節(jié)
線程傳參詳解,detach()大坑,成員函數(shù)做線程函數(shù)
(1)傳遞臨時對象作為線程參數(shù)
(1.1)要避免的陷阱 (解釋1)
(1.2)要避免的陷阱 (解釋2)
(1.3)總結(jié)
(2)臨時對象作為線程參數(shù)繼續(xù)講
(2.1)線程id概念
(2.2)臨時對象構(gòu)造時機抓捕
(3)傳遞類對象、智能指針作為線程參數(shù)
(4)用成員函數(shù)指針做線程函數(shù)
第4節(jié)
創(chuàng)建多個線程、數(shù)據(jù)共享問題分析、案例代碼
(1)創(chuàng)建和等待多個線程
(2)數(shù)據(jù)共享問題分析
(2.1)只讀的數(shù)據(jù)
(2.2)有讀有寫
(2.3)其他案例
(3)共享數(shù)據(jù)的保護案例代碼
第5節(jié)
互斥量概念、用法、死鎖演示及解決詳解
(1)互斥量(mutex)的基本概念
(2)互斥量的用法
(2.1)lock(),unlock()
(2.2)std::lock_guard類模板
(3)死鎖
(3.1)死鎖演示
(3.2)死鎖的一般解決方案
(3.3)std::lock()函數(shù)模板
(3.4)std::lock_guard的std::adopt_lock參數(shù)
第6節(jié)
unique_lock詳解
(1)unique_lock取代lock_guard
(2)unique_lock的第二個參數(shù)
(2.1)std::adopt_lock
(2.2)std::try_to_lock
(2.3)std::defer_lock
(3)unique_lock的成員函數(shù)
(3.1)lock()
(3.2)unlock()
(3.3)try_lock()
(3.4)release()
(4)unique_lock所有權(quán)的傳遞
第7節(jié)
單例設計模式共享數(shù)據(jù)分析、解決,call_once
(1)設計模式大概談
(2)單例設計模式
(3)單例設計模式共享數(shù)據(jù)問題分析、解決
(4)std::call_once()
第8節(jié)
condition_variable、wait、notify_one、notify_all
(1)條件變量std::condition_variable、wait()、notify_one()
(2)上述代碼深入思考
(3)notify_all()
第9節(jié)
async、future、packaged_task、promise
(1)std::async、std::future創(chuàng)建后臺任務并返回值
(2)std:: packaged_task
(3)std:: promise
(4)小結(jié)
第10節(jié)
future其他成員函數(shù)、shared_future、atomic
(1)std::future的其他成員函數(shù)
(2)std::shared_future
(3)原子操作std::atomic
(3.1)原子操作概念引出范例
(3.2)基本的std:: atomic用法范例
(3.3)老師的心得
第11節(jié)
std::atomic續(xù)談、std::async深入談
(1)原子操作std::atomic續(xù)談
(2)std::async深入談
(2.1)std::async參數(shù)詳述
(2.2)std::async和std::thread的區(qū)別
(2.3)std::async不確定性問題的解決
第12節(jié)
windows臨界區(qū)、其他各種mutex互斥量
(1)windows臨界區(qū)
(2)多次進入臨界區(qū)試驗
(3)自動析構(gòu)技術(shù)
(4)recursive_mutex遞歸的獨占互斥量
(5)帶超時的互斥量std::timed_mutex和std::recursive_timed_mutex
第13節(jié)
補充知識、線程池淺談、數(shù)量談、總結(jié)
(1)補充一些知識點
(1.1)虛假喚醒
(1.2)atomic
(2)淺談線程池
(2.1)場景設想
(2.2)實現(xiàn)方式
(3)線程創(chuàng)建數(shù)量談
(4)c++11多線程總結(jié) |