【C++11多線程併發編程】CH1_併發基本概念及實現,進程、線程基本概念

本博文由 youngpan1101 出品,轉載請註明出處。 
文章鏈接:https://blog.csdn.net/youngpan1101/article/details/102085704
作者: 宋洋鵬(youngpan1101) 
郵箱: [email protected]

ps:該博文是《王健偉老師的:c++11多線程併發視頻教程》的課後筆記。


併發 

定義:兩個或者更多的任務(獨立的活動) 同時發生(進行),即一個程序同時執行多個獨立的任務。

以往計算機是單核的,某一個時刻只能執行一個任務,主要是有操作系統負責調度,進行所謂的“任務切換”,這是併發的假象,這種上下文切換時需要時間開銷的。

隨着計算機硬件的發展,後面有了多核,能夠實現真正意義上的併發,即可以並行執行多個任務,這也是爲了滿足日益增長的對計算機的性能要求。

進程

進程就是一個可執行程序的執行過程。

線程

每個進程都有一個主線程(唯一的),線程是用來執行代碼的,可以理解成代碼的執行通路。除了主線程之外,可以通過寫代碼來創建其他線程,即創建其他的通路。每多創建一個線程,意味着在同一時刻可以多執行一個任務。

線程並不是越多越好(線程數量建議不要超過200個,具體視項目情況而定),每個線程都需要一個獨立的堆棧空間(1M),用於保存線程之間切換的中間狀態,有時線程多反而會降低效率。

每個線程都有自己獨立的運行路徑,但是一個進程中的所有線程共享地址空間(共享內存)。全局變量、指針和引用都可以在線程之間傳遞,所以多線程的開銷遠遠低於多進程,建議優先考慮多線程。

C++11新標準線程庫

C++11新標準的語言本身增加了對多線程的支持,意味着跨平臺的可移植性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章