多線程編程是現(xiàn)代軟件技術(shù)中很重要的一個環(huán)節(jié)。要弄懂多線程,這就要牽涉到多進(jìn)程?當(dāng)然,要了解到多進(jìn)程,就要涉及到操作系統(tǒng)。不過大家也不要緊張,聽我慢慢道來。這其中的環(huán)節(jié)其實并不復(fù)雜。
(1)單CPU下的多線程
在沒有出現(xiàn)多核CPU之前,我們的計算資源是唯一的。那么如果系統(tǒng)中有多個任務(wù)要處理的話,那么就需要按照某種規(guī)則依次調(diào)度這些任務(wù)進(jìn)行處理。什么規(guī)則呢?可以是一些簡單的調(diào)度方法,比如說
1)按照優(yōu)先級調(diào)度
2)按照FIFO調(diào)度
3)按照時間片調(diào)度等等
當(dāng)然,除了CPU資源之外,系統(tǒng)中還有一些其他的資源需要共享,比如說內(nèi)存、文件、端口、socket等。既然前面說到系統(tǒng)中的資源是有限的,那么獲取這些資源的最小單元體是什么呢,其實就是進(jìn)程。
(2)多核CPU下的多線程
沒有出現(xiàn)多核之前,我們的CPU實際上是按照某種規(guī)則對線程依次進(jìn)行調(diào)度的。在某一個特定的時刻,CPU執(zhí)行的還是某一個特定的線程。然而,現(xiàn)在有了多核CPU,一切變得不一樣了,因為在某一時刻很有可能確實是n個任務(wù)在n個核上運行。我們可以編寫一個簡單的open mp測試一下,如果還是一個核,運行的時間就應(yīng)該是一樣的。
(3)多線程編程
為什么要多線程編程呢?這其中的原因很多,我們可以舉例解決
1)有的是為了提高運行的速度,比如多核cpu下的多線程
2)有的是為了提高資源的利用率,比如在網(wǎng)絡(luò)環(huán)境下下載資源時,時延常常很高,我們可以通過不同的thread從不同的地方獲取資源,這樣可以提高效率
3)有的為了提供更好的服務(wù),比如說是服務(wù)器
4)其他需要多線程編程的地方等等
轉(zhuǎn)自:瘋狂軟件