使用c 進行執行緒池的設計1

2021-06-21 06:13:13 字數 1999 閱讀 4751

乙個執行緒池的設計需要的幾個東西:

執行緒池管理器:負責執行緒池的建立,管理和維護,執行緒池的終止。

工作執行緒:實際就是執行緒介面和執行緒管理的

任務佇列:用於儲存需要執行的任務,實際是乙個列表

執行緒介面:乙個執行緒函式的實現(在此為,還不知道還有沒有乙個更好的實現)

任務介面:需要使用執行緒池的中的執行緒處理的任務都需要繼承於此介面。

乙個簡單的邏輯就是:

工作執行緒,執行緒介面

任務介面和執行緒函式: 

#ifndef __thread_h__

#define __thread_h__

#include #include #include class runnable

; virtual void run() = 0;

};class cthread : public runnable

;#endif

實現:

#include "stdafx.h"

#include "thread.h"

cthread::cthread(void) :

m_prunnable(null),

m_brun(false)

cthread::~cthread(void)

cthread::cthread(runnable * prunnable) :

m_threadname(""),

m_prunnable(prunnable),

m_brun(false)

cthread::cthread(const char * threadname, runnable * prunnable) :

m_threadname(threadname),

m_prunnable(prunnable),

m_brun(false)

cthread::cthread(std::string threadname, runnable * prunnable) :

m_threadname(threadname),

m_prunnable(prunnable),

m_brun(false)

bool cthread::start(bool bsuspend)

if(bsuspend)

else

m_brun = (null != m_handle);

return m_brun;

}void cthread::run()

if(null != m_prunnable)

m_brun = false;

}void cthread::join(int timeout)

if(timeout <= 0)

::waitforsingleobject(m_handle, timeout); //

}void cthread::resume()

::resumethread(m_handle); //

}void cthread::suspend()

::suspendthread(m_handle); //

}bool cthread::terminate(unsigned long exitcode)

if(::terminatethread(m_handle, exitcode)) //

return false;

}unsigned int cthread::getthreadid()

std::string cthread::getthreadname()

void cthread::setthreadname(std::string threadname)

void cthread::setthreadname(const char * threadname)

else }

unsigned int cthread::staticthreadfunc(void * arg)

執行緒池的使用

簡而言之 兩個類 執行緒池的 類 public class threadpoolproxyfactory return mnormalthreadpoolproxy return public static threadpoolproxy createdownloadthreadpoolproxy ...

執行緒池的使用

執行緒池能幫助我們有效的管理執行緒,避免重複的建立銷毀執行緒。newfixedthreadpool 固定執行緒數量的執行緒池 newsinglethreadexecutor 返回乙個只有乙個執行緒的執行緒池 newcachedthreadpool 返回乙個可根據實際情況調整執行緒數量的執行緒池 ne...

執行緒池的使用

如果在使用執行緒的時候就去建立乙個新執行緒,當併發的執行緒數量很多,並且每個執行緒都是執行乙個時間很短的任務就結束了,系統在建立和銷毀執行緒上花費的時間和消耗的系統資源都相當大,甚至要比處理任務的時間和資源要多的多,同時活動的執行緒也需要消耗系統資源.executor是乙個頂層介面,它只宣告了乙個方...