多執行緒(1) 從生活中理解什麼是多執行緒

2021-08-26 05:59:51 字數 866 閱讀 8243

每乙個程式可以包含至少乙個執行緒,而多個執行緒之間可以「併發」執行。

在介紹執行緒前先來用生活中最常見的乙個小例子來理解什麼是執行緒:

假如你去一家餐館吃飯,那家餐館只有乙個服務員,所以這個唯一的服務員給你點菜的時候,別的去餐館吃飯的人就得等著。但是如果這個餐館有多個服務員的話,那麼在同一時刻就可以給多個去餐館吃飯的人點菜,這裡舉a、b兩個服務員,分別接待甲、乙兩個顧客,而每個顧客點了不同的三道菜。

上面例子中的餐館可以理解成乙個程式,而a、b兩個服務員可以理解成兩個執行緒,後廚做菜的廚師可以看做是cpu(假設只有乙個cpu)。

從a、b兩個服務員同時接待甲、乙兩個顧客這個表象來看執行緒是「同步」、「併發」執行的,但是在廚師做菜的過程中還是有先後之分的,只是廚師會把甲乙兩個顧客點的菜分開來做,做完甲的一道菜後立刻開始做乙的一道菜,這樣不停地切換著做甲乙兩個顧客點的菜。而在甲乙顧客看來他們桌上都有著菜吃,誤以為他們的菜是同時做出來的。

而計算機裡的多執行緒也是如此,cpu會分配給每乙個執行緒只有極少的執行時間,時間一到就交出執行權,所有執行緒被快速的切換執行,因為cpu的執行速度非常的快,所以在執行的過程中我們可以簡單的認為這些執行緒是「併發」執行的。

上面廚師做菜的原則是:不同的切換顧客們點的菜。假設廚師做菜的原則變了,是單顧客原則:給一位顧客做完所有的菜後再給別的顧客做菜,就是說先一下子把甲點的三道菜全做出來後再去做乙點的那三道菜,這樣的話如果廚師在做甲的某一道菜時發現甲點的那道菜的原料沒有了,那麼乙的菜就得一直等著。

如果是在計算機中,單顧客原則執行執行緒的話,當乙個惡性的執行緒執行不下去時,計算機就會出現宕機的現象,這時候只能重啟。

上面介紹的廚師做菜的兩種原則分別代表著計算機中線程的兩種排程形式:搶占式排程和非搶占式排程。

應用中我們一般用搶占式排程(即廚師的第一種做菜原則)。

從生活中理解什麼是多執行緒

每乙個程式可以包含至少乙個執行緒,而多個執行緒之間可以 併發 執行。在介紹執行緒前先來用生活中最常見的乙個小例子來理解什麼是執行緒 假如你去一家餐館吃飯,那家餐館只有乙個服務員,所以這個唯一的服務員給你點菜的時候,別的去餐館吃飯的人就得等著。但是如果這個餐館有多個服務員的話,那麼在同一時刻就可以給多...

多執行緒總結 一 1 什麼是多執行緒 2 併發與並行

舉個例子 程序就好像對一堆數求和,這個求和的過程就是乙個程序,也可以認為是計算機上執行的乙個程式,而執行緒可以理解為在對這一堆數進行求和的時候,有兩個人去計算,把這堆數字分成兩堆,乙個人去計算一堆,另乙個人去計算另一堆,可能不是很準確。但是這楊在我看來比較容易理解。併發 是在乙個cpu上有多個程序在...

多執行緒學習 一 什麼是執行緒

process與thread 程式 指令和資料的有序集合,其本身沒有任何執行的含義,是乙個靜態的概念。程序 process 執行程式的一次執行過程,乙個動態的概念。是系統資源分配的單位 執行緒 是cpu排程和執行的單位 乙個執行緒可以包含若干個執行緒,至少有乙個執行緒 注意 很多多執行緒是模擬出來的...