Linux 高併發執行緒池

2021-10-10 17:42:26 字數 1077 閱讀 8125

1 . 多程序方案:隨著客戶端的增加,連線成功後,為每個客戶端分配乙個程序,子程序繼承與客戶端互動的socket(父程序完成連線,子程序負責業務處理(父程序下發任務))。

2 . 多程序伺服器模型,每個普通執行緒自身accept建立連線,主控執行緒(執行緒建立,任務指定,執行緒**),多執行緒同時accpet阻塞等待連線(驚群問題–互斥鎖解決),accept加鎖。

3 . 主控執行緒完成網路io事件監聽,某一刻io監聽就緒,向執行緒池中國呢投遞特定任務(根據就緒socket不同,生成不同任務),執行緒池中完成任務傳遞,某個執行緒獲取任務處理。(併發能力又io復用決定,執行緒池決定伺服器業務處理能力)。

反向**伺服器(負載均衡,災難轉移)分布式

執行緒池:多執行緒容器

優點:預先建立待用執行緒,業務抵達,直接有執行緒可用,無需建立,縮短業務處理週期。

執行緒池中的執行緒有高重用性,可以反覆使用,相比傳統的多執行緒而言,減少了頻繁建立和銷毀的成本。

動態根據任務量和任務需求調整執行緒中的可用執行緒數量(對執行緒的管理和控制)。

構成:任務傳遞模式(生產者消費者模式),任務容器,執行緒池閾值(便於執行緒管理),執行緒。

設計原則:

執行緒池不能與任務繫結,執行緒只完成任務傳遞與執行,任務的實現與執行緒池五無關。

執行緒池擁有通用的自定義任務介面,可以讓使用者傳遞任意型別任務。

執行緒池中三種執行緒:

生產者執行緒 :任務投遞

消費者執行緒 :任務獲取與執行

管理者執行緒:根據執行緒池閾值,動態調整執行緒資源

執行緒池閾值:最大執行緒閾值 最小執行緒閾值 當前存活執行緒 忙執行緒數量 閒執行緒數量執行緒開關

反向**

反向**就是通常所說的web伺服器加速,它是一種通過在繁忙的web伺服器和外部網路之間增加乙個高速的web緩衝伺服器來降低實際的web服務 器的負載的一種技術。反向**是針對web伺服器提高加速功能,作為**快取,它並不是針對瀏覽器使用者,而針對一台或多台特定的web伺服器,它可以** 外部網路對內部網路的訪問請求。

負載均衡

使執行緒池中的每乙個程序或伺服器群的每一台伺服器分配的工作量按照權重或者一定的比例平衡。

災難轉移

若某一台伺服器或執行緒發生了故障 則不會給該處分配任務。

Linux簡單高併發模型 Epoll 執行緒池

首先是乙個locker.h的檔案,封裝了訊號量 互斥量 條件變數。locker.h檔案 ifndef locker h define locker h include include include 訊號量的類 class sem locker 銷毀訊號量 sem locker 等待訊號量 bool...

高併發執行緒池(一 執行緒池相關介面)

如果我們要新建立乙個執行緒來執行任務,那麼一般我們的 會是這樣 new thread new runnable start 一般是實現runnable介面或者繼承thread。從jdk從1.5開始為我們提供了乙個callable介面 see executor since 1.5 author dou...

多執行緒與高併發(九) 執行緒池

執行緒池是執行緒的集合,它會初始化一些執行緒,當有任務提交給執行緒池時,執行緒池會分配空閒的執行緒去執行任務,執行結束之後,執行緒會再次成為空閒狀態,等待執行下乙個任務。threadpoolexecutor 繼承了 abstractexecutorservice,而 abstractexecutor...