-
1 # A小陳同學A
-
2 # 家悅科技
Linux中多執行緒詳解及簡單例項
1.概念
程序:執行中的程式。 執行緒:一個程式中的多個執行路徑。更準確的定義是:執行緒是一個程序內部的一個控制序列。
2.為什麼要有執行緒?
用fork呼叫程序代價太高,需要讓一個程序同時做多件事情,執行緒就非常有用。
3.執行緒的優點和缺點。
優點:
(1)有時,讓程式看起來是在同時做兩件事是非常有用的。 比如在編輯文件時,還能統計文件裡的單詞個數。
(2)一個混雜著輸入、計算、輸出的程式,利用執行緒可以將這3個部 分分成3個執行緒來執行,從而改變程式執行的效能。
(3)一般來說,執行緒之間切換需要作業系統所做的工作比程序間切換需要的代價小。
缺點:
(1)編寫執行緒需要非常仔細的設計。
(2)對多執行緒的除錯困難程度比單執行緒除錯大得多。
4.建立執行緒
Linux系統支援POSIX多執行緒介面,稱為pthread。
編寫linux下的多執行緒程式,需要包含標頭檔案pthread.h,連結時需要使用庫libpthread.a。
如果在主執行緒裡面建立執行緒,程式就會在建立執行緒的地方產生分支,變成兩個部分執行。執行緒的建立透過函式pthread_create來完成。成功返回0。
一個簡單的建立多執行緒的程式:
輸出結果
-
3 # 逝水無痕I
例如程式的執行都是從main程序開始,如果在main建立多執行緒,比如執行緒1 2 3,那麼CPU就會併發執行執行緒1 2 3 以及main ,互不影響
-
4 # 繁星落石
Linux的執行緒是透過輕量化執行緒實現的,其實和普通程序沒有本質的區別,但是執行緒之間的可以訪問彼此的一些資料、段和檔案等等。
輕量化程序是Linux用來解決單純程序切換開銷太大的問題,透過建立執行緒組的方式來將屬於同一個程序的不同執行緒放在一起,實現部分資料共享,排程和通訊線上程組裡面都會非常方便和快速。
-
5 # 不走尋常的路
程序是同時進行,跟cpu核數有關係,執行緒是在同一個時間段輪流交替執行任務,可能執行緒A執行了一半卡住了,這時候執行緒B繼續執行
回覆列表
舉個例子 有一千塊磚要卸貨,
單執行緒就是一個人幹活。卸得慢
雙執行緒就是兩個人幹活。卸貨時間快了一倍
四執行緒就是4個人卸貨。卸貨時間快了4倍