Linux 網路程式設計 9 執行緒池

2021-10-23 02:39:06 字數 656 閱讀 8116

任務佇列 que_t

條件變數 pthread_cond_t

互斥鎖 pthread_mutex_t

啟動狀態startflag

執行緒id

執行緒數量

1. 主線程

① 初始化執行緒池init

② 啟動執行緒池

③ tcpinit,監聽埠,等待客戶端連線,客戶端連線後,得到newfd,建立佇列的節點,儲存newfd,把節點放到佇列中,用 pthread_cond_signal 通知子執行緒

2. 子執行緒

① 加鎖,判斷佇列是否為空,如果為空,cond_wait 等待主線程喚醒

② 如果佇列非空,去佇列中拿出頭指標指向的節點,得到newfd,解鎖,給客戶端傳輸檔案,釋放節點

程序池:

執行緒池:

Linux網路程式設計 執行緒池架構

任務佇列的任務會交給執行緒池的執行緒來處理。這當中主要運用到的是訊號量和條件變數來實現執行緒的阻塞和接任務。下面我分成了三部分 伺服器 任務佇列 客戶端 執行緒池。當任務佇列不為空,且沒有滿的時候 當任務佇列的任務超出以建好執行緒數量時 再建立出多個執行緒。下面是 書寫時候的主要流程,和具體的操作 ...

網路程式設計 執行緒池

在乙個池子裡,放固定數量的執行緒,這些執行緒等待任務,一旦有任務來,就有執行緒自發的去執行任務。concurrent.futures 這個模組是非同步呼叫的機制 concurrent.futures 提交任務都是用submit for submit 多個任務的提交 shutdown 是等效於pool...

多執行緒9 執行緒池

從原始碼中可以看出,執行緒池的建構函式有7個引數,分別是corepoolsize maximumpoolsize keepalivetime unit workqueue threadfactory handler 一 corepoolsize 執行緒池核心執行緒大小 執行緒池中會維護乙個最小的執行...