乙個簡單的執行緒池

2021-08-19 05:41:07 字數 1692 閱讀 1520

話說這個執行緒池也寫了好久了 ,做簡單的東西的時候也在用,最近因為乙個失誤刪掉了自己的一些檔案導致重新寫了一遍 所以貼出來,以防萬一 並且跟大佬們交流
//

// created by cxhmyself on 18-4-10.

//#include //都需要與互斥量一起才能工作

#include #include #include #include #include "../epoll/epoll.h"

//template > // 模板的所有要定義在同乙個檔案裡面

templateclass threadsafe_queue

threadsafe_queue& operator=(const threadsafe_queue & ) = delete;

void push(const t data)

bool try_pop(t& value)

std::shared_ptrtry_pop()

void wait_and_pop(t& value) // 用來得到頂部資料以及執行緒安全

);value = dq.front();

dq.pop();

}std::shared_ptrwait_and_pop()

);std::shared_ptrresult;

dq.pop();

return result;

}bool empty()

private:

//分別是互斥量 條件變數 和佇列本身

std::queuedq;

std::mutex mut;

std::condition_variable cond;

};#endif

/*最簡單的執行緒池*/

#ifndef studentcharge_threadpool_h

#define studentcharge_threadpool_h

/*思考如何加入任務 使其為乙個單源*/

/*任務類 t */

templateclass thread_pool

else }}

public:

/*建構函式*/

thread_pool(epoll *e = nullptr) :stop(false) ,epollpoint(e)

catch (...)

}/*析構函式*/

~thread_pool()

/*新增到任務佇列*/

void add_task(t tt )

void * getepoll()

private:

/* 請求佇列 這裡用的智慧型指標是指目標使用者的所有的資料 因為任務可能多樣性所以先傳入整體資料 佇列智慧型指標型別 */

threadsafe_queue< t > worker_queue;

/*執行緒池*/

std::vectorthread_pool;

/*檢測是否執行緒池被銷毀 被銷毀則清除所有的執行緒*/

bool stop;

/*執行緒池數量*/

size_t sum_threads;

/*這個屬於獨特的屬性*/

epoll * epollpoint;

};#endif //curriculumdesign_threadpool_h

執行緒池(一) 實現乙個簡單的執行緒池

我們知道頻繁的建立 銷毀執行緒是不可取的,為了減少建立和銷毀執行緒的次數,讓每個執行緒可以多次使用,我們就可以使用執行緒池,可以降低資源到的消耗。執行緒池裡面肯定有多個執行緒,那麼我們就簡單的用乙個陣列來儲存執行緒,那我們我們預設裡面有 5 個執行緒。那我們執行緒池裡只有五個執行緒能同時工作,那同時...

乙個簡單的執行緒池

最近自己,很煩所以超級久沒學習了,今天趁著抗戰七十周年放三天假,趕緊看下書。廢話不多說。今天,介紹乙個簡單的執行緒池。首先說明什麼是執行緒池,執行緒池 是包含若干個執行緒,來處理多個任務的執行緒集合。它的目的是用來處理,大量的相對短暫的任務。這裡我們先來解釋下兩個概念,什麼叫大量呢?對於執行緒來說,...

乙個簡單的執行緒池實現

乙個linux下簡單的執行緒池實現 實現了大部分邏輯,有部分邏輯未實現,只是提供乙個思路 執行緒池類 threadpool.h created on oct 13,2016 author luokun ifndef threadpool h define threadpool h include i...