下面分三個方面多線程技術的必須掌握一些基本知識。
1.進程
2.線程
3.並發
(1)進程
一個可執行程序運行起來了,即為創建了一個進程。如在電腦上打開了word,就創建了一個word進程,打開QQ,又創建了一個QQ進程。
可以在任務管理器中----->用戶中查看進程。
不同的進程之間的通信方式有:管道、消息隊列、共享內存、信號量(同一台電腦),socket(支持不同電腦)。
(2)線程
1.線程可理解成一條代碼執行的通道
2.線程與進程之間的關系:
同一個進程允許有多個線程;
同一個進程的每個線程都有獨立的堆棧空間;
一個進程只有一個主線程,主線程隨着進程的開始而開始,結束而結束;(例如我們在運行一個簡單的打印"hello world"程序時,實際上時進程的主線程來執行main函數中的打印”hello world"代碼)
一個進程中的所有線程共享內存,全局變量、指針、引用都可以在線程之間傳遞,這也是多線程技術性能高的原因,但同時也帶來了數據性一致的問題;(例如線程A和線程B同時對同一塊內存寫入數據,那么可能出現問題)
(3)並發
兩個或多個任務同時進行,包括多進程並發,多線程並發。
其他:
多線程技術是為了減少上下文切換的開銷時間,提高性能,但是並不是線程越多越好;
C++11新標准中,C++語言本身增加了多線程的支持,這意味着代碼可移植(跨平台)。