使用者態多執行緒的3種實現方式

2021-06-20 21:38:57 字數 450 閱讀 4447

使用者態的執行緒概念和核心態的執行緒概念不同。有三種模式,分別是:

(1).一對一

使用者態乙個執行緒對應核心態乙個執行緒。使用者態的執行緒併發執行,是真的併發執行。乙個執行緒阻塞,不會影響其它執行緒。

缺點:a:許多系統限制核心執行緒數量,這就直接限制了使用者態的執行緒數量。

b:許多系統中,核心執行緒間的排程花銷大,導致使用者執行緒的執行效率下降。

(2)多對一

乙個核心執行緒可以用於生成多個使用者態執行緒。

優點:執行緒間切換花銷小,高效的上下文切換,速度因此快了。使用者態的執行緒數幾乎是無限制的。

缺點:乙個使用者態執行緒阻塞,對應的核心執行緒也會阻塞,那麼此核心態衍生出來的使用者態執行緒組都阻塞了。

特徵:因為是共用乙個核心執行緒,隨著使用者態執行緒數的增加,執行緒的效能不會有明顯的增加。

(3)多對多

像交換機一樣,多個使用者態執行緒通過乙個中轉節點,對應上核心態的多個執行緒。

實現執行緒3種方式

1 繼承thread實現。2 實現runnable介面。3 實現callable介面,用futuretask接收返回值。總結 其實執行緒最核心的是runnable,因為thread和futuretask都繼承該介面來實現具體功能,即拓展實現。而thread實現的start0 方法,其呼叫本地方法開啟...

Linux C實現純使用者態搶占式多執行緒

include include include include include include 僅僅是測試demo,分配4096位元組的stack足夠了。define stack size 4096 為什麼是72?因為我們在訊號處理中增加了乙個區域性變數,這樣pretcode的偏移就是32位元組了。...

使用者態多執行緒實現的基本原理

本文參考了使用者態非搶占式執行緒庫實現 一文以及gnu pth 前者是一種使用者態執行緒庫的簡單實現,屬於乙個很好的demo,後者就是大家熟知的pthread的使用者態實現,比較完善。keywords user space multithreading,pth 所謂多執行緒,簡單講就是能夠讓幾個不同...