執行緒的實現方式

2021-09-07 11:00:31 字數 1154 閱讀 8237

執行緒的實現可以分為兩類:使用者級執行緒(user-levelthread, ult)和核心級執行緒(kemel-levelthread,  klt)。核心級執行緒又稱為核心支援的執行緒。

在使用者級執行緒中,有關執行緒管理的所有工作都由應用程式完成,核心意識不到執行緒的存在。應用程式可以通過使用執行緒庫設計成多執行緒程式。通常,應用程式從單執行緒起始,在該執行緒中開始執行,在其執行的任何時刻,可以通過呼叫執行緒庫中的派生例程建立乙個在相同程序中執行的新執行緒。圖2-2(a)說明了使用者級執行緒的實現方式。

在核心級執行緒中,執行緒管理的所有工作由核心完成,應用程式沒有進行執行緒管理的**,只有乙個到核心級執行緒的程式設計介面。核心為程序及其內部的每個執行緒維護上下文資訊,排程也是在核心基於執行緒架構的基礎上完成。圖2-2(b)說明了核心級執行緒的實現方式。

在一些系統中,使用組合方式的多執行緒實現。執行緒建立完全在使用者空間中完成,執行緒的排程和同步也在應用程式中進行。乙個應用程式中的多個使用者級執行緒被對映到一些(小於或等於使用者級執行緒的數目)核心級執行緒上。圖2-2(c)說明了使用者級與核心級的組合實現方式。

圖2-2使用者級和核心級執行緒

有些系統同時支援使用者執行緒和核心執行緒由此產生了不同的多執行緒模型,即實現使用者級執行緒和核心級執行緒的連線方式。

1) 多對一模型

將多個使用者級執行緒對映到乙個核心級執行緒,執行緒管理在使用者空間完成。

此模式中,使用者級執行緒對作業系統不可見(即透明)。

優點:執行緒管理是在使用者空間進行的,因而效率比較高。

缺點:當乙個執行緒在使用核心服務時被阻塞,那麼整個程序都會被阻塞;多個執行緒不能並行地執行在多處理機上。

2) 一對一模型

將每個使用者級執行緒對映到乙個核心級執行緒。

優點:當乙個執行緒被阻塞後,允許另乙個執行緒繼續執行,所以併發能力較強。

缺點:每建立乙個使用者級執行緒都需要建立乙個核心級執行緒與其對應,這樣建立執行緒的開銷比較大,會影響到應用程式的效能。

3) 多對多模型

將 n 個使用者級執行緒對映到 m 個核心級執行緒上,要求 m <= n。

特點:在多對一模型和一對一模型中取了個折中,克服了多對一模型的併發度不高的缺點,又克服了一對一模型的乙個使用者程序占用太多核心級執行緒,開銷太大的缺點。又擁有多對一模型和一對一模型各自的優點,可謂集兩者之所長。

執行緒的實現方式

建立執行緒的兩種方式 1 繼承thread類建立執行緒 thread類本質上是實現了runnable介面的乙個例項,代表乙個執行緒的例項。啟動執行緒的唯一方法就是通過thread類的start 例項方法。start 方法是乙個native方法,它將啟動乙個新執行緒,並執行run 方法。這種方式實現多...

多執行緒的實現方式

什麼時候需要使用多執行緒 1.通過平行計算提高程式效能 2.等待網路 io響應導致的耗時問題 多執行緒的實現有三種 一 繼承thread類 thread類本質上是實現了runable介面的乙個例項,它代表了乙個執行緒的例項。啟動執行緒唯一的方法 是通過thread類的start 方法。start方法...

多執行緒實現方式

多執行緒實現方式 1 繼承thread類建立執行緒 thread類本質上是實現了runnable介面的乙個例項,代表乙個執行緒的例項。啟動執行緒的唯一方法就是通過thread類的start 例項方法。start 方法是乙個native方法,它將啟動乙個新執行緒,並執行run 方法。這種方式實現多執行...