ATL 執行緒池的使用

2021-09-06 03:53:37 字數 1371 閱讀 8740

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

// client of the cthreadpool class.

__inte***ce __declspec(uuid("b1f64757-6e88-4fa2-8886-7848b0d7e660"))

ithreadpoolconfig : public iunknown

;

分兩種crtthreadtraits和win32threadtraits,分別呼叫_beginthreadex和createthread方法

只實現了win32waittraits了,即呼叫了waitforsingleobject

執行緒池的使用

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

執行緒池的使用

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

執行緒池的使用

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