第1節(jié)
前言
(1)總述以及基礎(chǔ)要求、開(kāi)發(fā)環(huán)境
(2)簡(jiǎn)要自我介紹和講課特點(diǎn)
(3)出這門課程的主要目的
(4)在vs2017中創(chuàng)建一個(gè)工程方便后續(xù)的課程講解
章節(jié)2
正式開(kāi)講
第1節(jié)
并發(fā)基本概念及實(shí)現(xiàn),進(jìn)程、線程基本概念
(1)并發(fā)、進(jìn)程、線程的基本概念和綜述
(1.1)并發(fā)
(1.2)可執(zhí)行程序
(1.3)進(jìn)程
(1.4)線程
(1.5)學(xué)習(xí)心得
(2)并發(fā)的實(shí)現(xiàn)方法
(2.1)多進(jìn)程并發(fā)
(2.2)多線程并發(fā)
(2.3)總結(jié)
(3)C++11新標(biāo)準(zhǔn)線程庫(kù)
第2節(jié)
線程啟動(dòng)、結(jié)束,創(chuàng)建線程多法、join,detach
(1)范例演示線程運(yùn)行的開(kāi)始和結(jié)束
(1.1)thread
(1.2)join()
(1.3)detach()
(1.4)joinable()
(2)其他創(chuàng)建線程的手法
(2.1)用類,以及一個(gè)問(wèn)題范例
(2.2)用lambda表達(dá)式
第3節(jié)
線程傳參詳解,detach()大坑,成員函數(shù)做線程函數(shù)
(1)傳遞臨時(shí)對(duì)象作為線程參數(shù)
(1.1)要避免的陷阱 (解釋1)
(1.2)要避免的陷阱 (解釋2)
(1.3)總結(jié)
(2)臨時(shí)對(duì)象作為線程參數(shù)繼續(xù)講
(2.1)線程id概念
(2.2)臨時(shí)對(duì)象構(gòu)造時(shí)機(jī)抓捕
(3)傳遞類對(duì)象、智能指針作為線程參數(shù)
(4)用成員函數(shù)指針做線程函數(shù)
第4節(jié)
創(chuàng)建多個(gè)線程、數(shù)據(jù)共享問(wèn)題分析、案例代碼
(1)創(chuàng)建和等待多個(gè)線程
(2)數(shù)據(jù)共享問(wèn)題分析
(2.1)只讀的數(shù)據(jù)
(2.2)有讀有寫(xiě)
(2.3)其他案例
(3)共享數(shù)據(jù)的保護(hù)案例代碼
第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的第二個(gè)參數(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ì)模式共享數(shù)據(jù)分析、解決,call_once
(1)設(shè)計(jì)模式大概談
(2)單例設(shè)計(jì)模式
(3)單例設(shè)計(jì)模式共享數(shù)據(jù)問(wèn)題分析、解決
(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)建后臺(tái)任務(wù)并返回值
(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不確定性問(wèn)題的解決
第12節(jié)
windows臨界區(qū)、其他各種mutex互斥量
(1)windows臨界區(qū)
(2)多次進(jìn)入臨界區(qū)試驗(yàn)
(3)自動(dòng)析構(gòu)技術(shù)
(4)recursive_mutex遞歸的獨(dú)占互斥量
(5)帶超時(shí)的互斥量std::timed_mutex和std::recursive_timed_mutex
第13節(jié)
補(bǔ)充知識(shí)、線程池淺談、數(shù)量談、總結(jié)
(1)補(bǔ)充一些知識(shí)點(diǎn)
(1.1)虛假喚醒
(1.2)atomic
(2)淺談線程池
(2.1)場(chǎng)景設(shè)想
(2.2)實(shí)現(xiàn)方式
(3)線程創(chuàng)建數(shù)量談
(4)c++11多線程總結(jié) |