??并發基本概念以及實作、行程、執行緒基本概念
一、并發、行程、執行緒的基本概念和綜述
這些詳細概念具體去看os筆記;
1.1 并發
兩個或者更多的任務(獨立的活動)同時發生(進行):一個程式同時執行多個獨立的任務;
以往計算機,單核cpu(中央處理器):某一個時刻只能執行一個任務,由作業系統調度,每秒鐘進行多次所謂的“任務切換”,并發的假象(不是真正的并發),切換(背景關系切換)時要保存變數的狀態、執行進度等,存在時間開銷;
多處理器計算機比如雙核,4核,8核,10核等,能夠實作真正的并行執行多個任務(硬體并發);
使用并發的原因:主要就是同時可以干多個事,提高性能
1.2 可執行程式
這是磁盤上的一個檔案,windows下,擴展名為.exe;linux下,命令ls -la,rwx(可讀可寫可執行,最后以x結尾的檔案)
1.3 行程
運行一個可執行程式:在windows下,可雙擊;在linux下,./檔案名
行程,一個可執行程式運行起來了,就叫創建了一個行程,行程就是運行起來的可執行程式,
1.4 執行緒
①
a)每個行程(執行起來的可執行程式),都有唯一的一個主執行緒
b)當執行可執行程式時,產生一個行程后,這個主執行緒就隨著這個行程默默啟動起來了
ctrl+F5運行這個程式的時候,實際上是行程的主執行緒來執行(呼叫)這個main函式中的代碼
執行緒:用來執行代碼的,執行緒這個東西,可以理解為一條代碼的執行通路,如下圖:

②
除了主執行緒之外,可以通過寫代碼來創建其他執行緒,其他執行緒走的是別的道路,甚至去不同的地方
每創建一個新執行緒,就可以在同一時刻,多干一個不同的事(多走一條不同的代碼執行路徑)
③
多執行緒(并發)
執行緒并不是越多越好,每個執行緒,都需要一個獨立的堆疊空間(大約1M),執行緒之間的切換要保存很多中間狀態(進行執行緒背景關系切換),切換也會耗費本該屬于程式運行的時間;
必須使用多執行緒的案例:


二、并發的實作方法
實作并發的手段:
a)通過多個行程實作并發
b)在單獨的行程中,寫代碼創建除了主執行緒之外的其他執行緒來實作并發
2.1 多行程并發
比如賬號服務器一個行程,游戲服務器一個行程,
服務器行程之間存在通信(同一個電腦上:管道,檔案,訊息佇列,共享記憶體);(不同電腦上:socket通信技術),具體看os筆記;
2.2 多執行緒并發
執行緒:感覺像是輕量級的行程,每個行程有自己獨立的運行路徑,但一個行程中的所有執行緒共享地址空間(共享記憶體),全域變數、全域記憶體、全域參考都可以在執行緒之間傳遞,所以多執行緒開銷遠遠小于多行程
多行程并發和多執行緒并發可以混合使用,但建議優先考慮多執行緒技術

三、C++11新標準執行緒庫
以往在windows:CreateThread(), _beginthread(),_beginthreadexe()創建執行緒;linux:pthread_create()創建執行緒;不能跨平臺
后來POSIX thread(pthread):跨平臺,但要做一番配置,也不方便
當下C++11新標準,C++語言本身增加對多執行緒的支持,意味著可移植性(跨平臺),這大大減少開發人員的作業量;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/472349.html
標籤:其他
