class cmyworker必須實現以上介面;
具體參考如下:
demo:
long g_lcurrid = -1;class cmyworker
virtual bool initialize(void *pvparam)
virtual void terminate(void* /*pvparam*/)
virtual bool getworkerdata(dword /*dwparam*/, void ** /*ppvdata*/)
protected:
dword m_dwexecs;
long m_lid;
}; // cmyworker
#define threadpool_size 5參考:///int main(int
/*argc*/, char* /*argv*/)
}// allow a little time for all the tasks to complete
sleep(1000);
// clean up the tasks and shutdown the thread pool
for ( i = 0; i < tasks.getsize(); i++ )
// shutdown the thread pool
pool.shutdown();
}else
printf("failed to init thread pool!");
printf("\n");
return 0;
}
initialize初始化執行緒數量,並初始化worker
queuerequest則呼叫worker的execute方法
等worker全部執行完畢以後才呼叫terminate方法
定義了乙個基礎的介面
// used to configure the worker thread pool. this can be used by any分兩種crtthreadtraits和win32threadtraits,分別呼叫_beginthreadex和createthread方法// client of the cthreadpool class.
__inte***ce __declspec(uuid("b1f64757-6e88-4fa2-8886-7848b0d7e660"))
ithreadpoolconfig : public iunknown
;
只實現了win32waittraits了,即呼叫了waitforsingleobject
執行緒池的使用
簡而言之 兩個類 執行緒池的 類 public class threadpoolproxyfactory return mnormalthreadpoolproxy return public static threadpoolproxy createdownloadthreadpoolproxy ...
執行緒池的使用
執行緒池能幫助我們有效的管理執行緒,避免重複的建立銷毀執行緒。newfixedthreadpool 固定執行緒數量的執行緒池 newsinglethreadexecutor 返回乙個只有乙個執行緒的執行緒池 newcachedthreadpool 返回乙個可根據實際情況調整執行緒數量的執行緒池 ne...
執行緒池的使用
如果在使用執行緒的時候就去建立乙個新執行緒,當併發的執行緒數量很多,並且每個執行緒都是執行乙個時間很短的任務就結束了,系統在建立和銷毀執行緒上花費的時間和消耗的系統資源都相當大,甚至要比處理任務的時間和資源要多的多,同時活動的執行緒也需要消耗系統資源.executor是乙個頂層介面,它只宣告了乙個方...