4)諸如 int* a ;* a = 1; char * a; * a = 『a』;這種寫法是錯的,空位址不能賦值
5)char * aa =(char*)「asd」;這是可以的
6)student s4 = s3;呼叫的是拷貝構造!!並非拷貝賦值,因為這是建立物件
7)student s4 = s3; s4=s1;後面那個才是呼叫拷貝賦值,拷貝賦值是對已有的物件進行賦值。
8)shared_ptr在reset時會使得原來的計數器減一
9)對於thread傳引數,參考
1、使用引用和指標是要注意;
2、對於內建簡單型別,建議傳值;
3、對於類物件,建議使用引用來接收,使用引用會只會構造兩次,而傳值會構造三次,使用ref()傳只會呼叫一次,使用臨時物件會呼叫兩次
4、在detach下要避免隱式轉換,因為此時子執行緒可能還來不及轉換主線程就結束了,應該在構造執行緒時,用引數構造乙個臨時物件傳入。
10)std::move 強制把左值轉成右值,std::forward,std::bind,std::function
第十節28.async非同步一直會等到自己結束主線程才會結束,這一點和thread不一樣。並且如果是deferred模式,子執行緒還是在主線程中執行,此時執行緒id一樣。
29.shared_future和future,前者get後還能繼續get,後者不行,只能get一次,因為使用了move,導致變空。
30.atomic原子操作,理解成不需要互斥量加鎖的技術解決多執行緒併發。原子操作就是多執行緒中不會被打斷的程式執行片段。原子操作的效率比互斥量高。互斥量加鎖一般多行**,原子操作一般針對乙個變數而不是**段。
31.原子操作要麼完成要麼沒開始,沒有中間狀態。一般用於統計傳送多少資料報。
第十一節
32.++,–,+=,-=等才能支援原子操作,有的不支援,自己測試。atomia;a=a+1;就不支援原子操作
33.如果系統資源不足,呼叫thread時可能出錯,報異常。而且thread取返回值不太容易。async由於資源緊張無法建立新執行緒時,就會在主線程中執行
34.async可以延遲建立任務,async和thread最明顯的不同是,async有時候並不一定建立執行緒。
35.async如果不帶第乙個引數,預設值是launch::deferred | launch::async
第九節講錯了,這個預設值的效果可能和launch::deferred一樣也可能和 launch::async一樣
36.非同步指建立新執行緒,同步指不建立新執行緒
37.async叫建立非同步任務,不一定建立新執行緒
第十二節
38.windows的臨界區和互斥量類似。是windows.h裡的,只能在win平台上用。但是c++11裡的多執行緒可以跨平台。
39.win中的critical_section使用需要初始化
40.同乙個執行緒中使用多次進入相同臨界區是可以的,不過也要相同次數離開臨界區。但是mutex不可以這樣。
41.win沒有自動析構,比如lock_guard這樣,但是自己可以寫個class,構造進入臨界區,析構離開臨界區。這種寫法叫做rall
42.recursive_mutex 遞迴的獨佔互斥量,可以在乙個執行緒中多次上鎖。
43.超時的互斥量timed_mutex,提供try_lock_for,try_lock_unti,如果在某段時間裡沒拿到鎖或者拿到鎖會幹什麼
44.recursive_timed_mutex
第十三節
45.虛假喚醒:把你喚醒了卻做了沒有意義的事。 先理解好第八節的notify_one,notify_all
46.atomic:初始化需要注意
47:.執行緒池:兩萬個玩家該怎麼建立伺服器執行緒。把一堆執行緒弄到一起統一管理,迴圈利用執行緒。
實現方式:在程式啟動時,一次性建立好一定數量的執行緒。幾十幾百個,極限2000個。盡量不要在程式執行過程中建立執行緒
C 11 多執行緒
新特性之描述 雖然 c 11 會在語言的定義上提供乙個記憶體模型以支援執行緒,但執行緒的使用主要將以 c 11 標準庫的方式呈現。c 11 標準庫會提供型別 thread std thread 若要執行乙個執行緒,可以建立乙個型別 thread 的實體,其初始引數為乙個函式物件,以及該函式物件所需要...
c 11 多執行緒
1.多執行緒的原理 同一時間內,cpu只能處理1條執行緒,只有1條執行緒在工作 執行 多執行緒併發 同時 執行,其實是cpu快速地在多條執行緒之間排程 切換 如果cpu排程執行緒的時間足夠快,就造成了多執行緒併發執行的假象。思考 如果執行緒非常非常多,會發生什麼情況?cpu會在n多執行緒之間排程,c...
C 11 多執行緒
2011 年 c 迎來重大的改革 語言層面上承認了 多執行緒 程式的存在 加入了 thread 多執行緒支援庫,內容豐富 功能強大。首先從我個人理解角度粗鄙的理解一下多執行緒。多執行緒眾所周知 切割時間片的多程式併發執行,大多數的計算機都支援多執行緒併發的硬體支援。這可能是最簡單的多執行緒程式了。多...