什麼是多執行緒模型?


使用者級可用的執行緒稱為使用者執行緒。核心級可用的執行緒稱為核心執行緒。使用者執行緒在核心之上得到支援,並在沒有核心支援的情況下進行管理,而核心執行緒則由作業系統直接支援和管理。

多執行緒模型的型別

多執行緒模型的不同型別如下:

多對一模型

它將多個使用者執行緒對映到一個核心執行緒。執行緒管理基於使用者空間中的執行緒庫,因此它效率很高,但如果執行緒進行阻塞系統呼叫,則整個程序將被阻塞。

因此,一次只能有一個執行緒訪問核心空間,多個執行緒無法在多處理器上並行執行。

多對一模型的示意圖如下:

一對一模型

它將每個使用者執行緒對映到一個核心執行緒。透過允許另一個執行緒在某個執行緒進行阻塞系統呼叫時執行,它提供了比多對一模型更高的併發性。它允許多個執行緒在多處理器上並行執行。

此模型的缺點是建立使用者執行緒需要建立相應的核心執行緒,因此建立核心執行緒的開銷可能會影響應用程式的效能。

示例包括 Linux 和 Windows。

一對一模型的示意圖如下:

多對多模型

它將多個使用者級執行緒多路複用到較少或相同數量的核心執行緒。核心執行緒的數量可能特定於某個特定應用程式。多對一模型允許開發人員建立任意數量的使用者執行緒,並且不會獲得真正的併發性,因為核心一次只能排程一個執行緒。

而一對一模型允許更大的併發性,但開發人員不會使用應用程式建立許多執行緒。

因此,最終多對多模型克服了所有這些問題。在這裡,開發人員可以根據需要建立任意數量的使用者執行緒,並且相應的核心執行緒可以在多處理器上並行執行。當某個執行緒執行阻塞系統呼叫時,核心可以排程另一個執行緒執行。

多對多模型的示意圖如下:

更新於:2021-11-30

452 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告