執行緒池的實現

2021-08-04 12:26:20 字數 1151 閱讀 3176

為什麼要使用執行緒池:因為執行緒的建立和銷毀佔了大量的cpu等系統資源,使用執行緒池可以解決這種情況,提高伺服器的效能。

執行緒池的思想:(1)先在記憶體中開闢出一些數目固定的執行緒。(2)當請求到達時,從執行緒池中選擇乙個空閒的執行緒來服務,服務完成時,執行緒放入執行緒池。(3)當請求到答時,將請求放到任務佇列中,等有空閒的執行緒時處理。

**使用c++實現的:

1、使用互斥鎖,來保證了執行緒安全。

2、使用訊號量,來控制當沒有請求到來時,執行緒處於等待。

3、建立執行緒時,執行緒的入口函式,需要宣告為靜態的,因為類的成員函式,不能作為執行緒建立的引數,因為pthread_create需要的引數型別為void*(*)(void*),而類的成員函式的型別為void*(threadpool::)(void*),引數型別不匹配。需要宣告為靜態的,那麼類的成員函式就不帶this指標,引數就匹配了。而且新

執行緒要用到其他類的成員函式和成員變數,需要顯示的把this指標傳進去。

#includeusing namespace std;

#include#include#include#include#includeclass mutexlock

void lock()

void unlock()

~mutexlock()

private:

pthread_mutex_t mutex;

};class sem

void wait()

void post()

~sem()

private:

sem_t s;

};templateclass threadpool

}int threadnums; //執行緒的數目

int requestqueue; //請求佇列的大小

pthread_t* threadbuf; //用來r存放執行緒id

queueq; //請求佇列

mutexlock ml; //互斥鎖

sem sem; //訊號量

bool flag; //判斷主程序有沒有退出

}; templatevoid* threadpool::start_routine(void* arg) //執行緒開始執行的函式

int main()

實現執行緒池

1.執行緒池優點 1 減少建立和銷毀執行緒的次數 2 可以根據系統的能力,調整執行緒池中線程的數目 3 減少切換執行緒的開銷 2.實現自定義執行緒池 思路 public class threadpool extends threadgroup 加入任務 public synchronized voi...

c 執行緒池實現(四)執行緒池實現

前面已經說到了同步佇列的實現,下面來看執行緒池的實現。ifndef include threadpool define include threadpool include include include include include syncqueue.hpp namespace mythrea...

Python的執行緒池實現

實現 coding utf 8 import queue import threading import sys import time import urllib 替我們工作的執行緒池中的執行緒 class mythread threading.thread def init self,workq...