-
大小: 64KB文件類型: .zip金幣: 2下載: 0 次發布日期: 2021-05-07
- 語言: 其他
- 標簽: ThreadPool??
資源簡介
Windows下比較完美線程池的升級版,加入了我對線程池能想到的幾乎所有功能,而且更改了第一版本的一些Bug,并進行了效率的優化。
第一版的介紹地址:http://blog.csdn.net/fishjam/article/details/8632049
功能列表如下:
1.能自動根據任務和線程的多少在 最小/最大 線程個數之間調整(Vista后的系統有 SetThreadpoolThreadMaximum 等函數有類似功能),現已支持動態改變最小、最大值。
2.可以設置等待Job的最大個數,并在加入Job時,隊列滿了的話,可以設置等待超時并根據返回值進一步處理
3.能方便的對任一任務進行取消,如任務尚未運行則由框架代碼處理,如任務已經運行,則需要 JobBase 的子類根據 GetJobWaitType 的返回值進行處理
4.能對單個Job或整個線程池進行 暫停、繼續、停止 處理 -- 需要 JobBase 的子類根據 GetJobWaitType 的返回值進行處理
5.支持回調方式的反饋通知( Progress/Error 等)
6.使用模版方式實現,能方便的進行參數傳遞
7.在加入任務時可以設置優先級,現已支持動態調整優先級
8.使用的是微軟的基本API,能支持WinXP、Vista、Win7等各種操作系統(CreateThreadpoolWork 等只能在Vista后才能使用)
9.可以有多個實例,方便進行控制(QueueUserWorkItem 等是單實例)
10.采用的是對稱模式的線程池(沒有管理線程),運行成本低

代碼片段和文件信息
//?FTLDemo.cpp?:?定義應用程序的類行為。
//
#include?“stdafx.h“
#include?“FTLDemo.h“
#include?“FTLDemoSheet.h“
//#include?
//#include?
//#include?
//#include?
//#include?“vld.h“
//#include?
#ifdef?_DEBUG
#define?new?DEBUG_NEW
#endif
//?CFTLDemoApp
BEGIN_MESSAGE_MAP(CFTLDemoApp?CWinApp)
ON_COMMAND(ID_HELP?&CWinApp::onhelp)
END_MESSAGE_MAP()
//?CFTLDemoApp?構造
CFTLDemoApp::CFTLDemoApp()
{
//?將所有重要的初始化放置在?InitInstance?中
}
//?唯一的一個?CFTLDemoApp?對象
CFTLDemoApp?theApp;
//CComModule?_Module;?????//為了使用CFResourcelessDlg
//?CFTLDemoApp?初始化
BOOL?CFTLDemoApp::InitInstance()
{
????//FUNCTION_BLOCK_INIT();
????BOOL?bRet?=?FALSE;
????CoInitializeEx(NULL?COINIT_APARTMENTTHREADED);
????{
FUNCTION_BLOCK_TRACE(0);
????????//VLDEnable();
????????//FAST_TRACE_OPTIONS?traceOptions;
????????//traceOptions.traceThreshold?=?tlTrace;
????????//traceOptions.bWriteToFile?=?TRUE;
????????//FTL::CFFastTrace::GetInstance().SetTraceOptions(&traceOptions);
????????//?如果一個運行在?Windows?XP?上的應用程序清單指定要
????????//?使用?ComCtl32.dll?版本?6?或更高版本來啟用可視化方式,
????????//則需要?InitCommonControlsEx()。否則,將無法創建窗口。
????????INITCOMMONCONTROLSEX?InitCtrls;
????????InitCtrls.dwSize?=?sizeof(InitCtrls);
????????//?將它設置為包括所有要在應用程序中使用的
????????//?公共控件類。
????????InitCtrls.dwICC?=?ICC_WIN95_CLASSES;
????????InitCommonControlsEx(&InitCtrls);
????????CWinApp::InitInstance();
????????AfxEnableControlContainer();
????????//FTL::CFFileUtil::DumpAllAPISystemFolderPath();
????????//?標準初始化
????????//?如果未使用這些功能并希望減小
????????//?最終可執行文件的大小,則應移除下列
????????//?不需要的特定初始化例程
????????//?更改用于存儲設置的注冊表項
????????SetRegistryKey(_T(“Fishjam“));
//FTL::CFCrashHandler?crashHandler;
????????//crashHandler.SetDefaultCrashHandlerFilter();
????????//FTL::CFAutoGdiplus???gdiPlusInitobject;
????????//FTL::CFWinsockEnvInit?winsockInit;
????????//CFTLDemoDlg?dlg;
????????//m_pMainWnd?=?&dlg;
????????//INT_PTR?nResponse?=?dlg.DoModal();
????????CFTLDemoSheet?sheet(TEXT(“FTL?Demo“));
????????INT_PTR?nResponse??=?sheet.DoModal();
????????if?(nResponse?==?IDOK)
????????{
????????}
????????else?if?(nResponse?==?IDCANCEL)
????????{
????????}
????????//?由于對話框已關閉,所以將返回?FALSE?以便退出應用程序,
????????//??而不是啟動應用程序的消息泵。
????}
????CoUninitialize();
????//FUNCTION_BLOCK_UNINIT();
????return?FALSE;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????2620??2015-12-29?21:36??FTLDemo.cpp
?????文件?????????482??2014-06-24?20:21??FTLDemo.h
?????文件???????38902??2016-01-18?23:14??FTLDemo.rc
?????文件????????1233??2015-12-29?21:25??FTLDemo.sln
?????文件???????21504??2016-01-18?23:17??FTLDemo.suo
?????文件????????9944??2015-12-29?21:42??FTLDemo.vcproj
?????文件????????2916??2015-12-29?21:27??FTLDemoSheet.cpp
?????文件????????1050??2015-05-24?17:38??FTLDemoSheet.h
?????文件????????2613??2015-12-29?21:45??ftlFake.h
?????文件??????????85??2013-03-03?15:34??ftlThread.cpp
?????文件????????3954??2013-03-03?15:38??ftlThread.h
?????文件???????18225??2015-12-29?21:50??ftlThreadPool.h
?????文件???????38094??2015-12-29?21:46??ftlThreadPool.hpp
?????文件????????2891??2014-06-24?20:21??ReadMe.txt
?????目錄???????????0??2015-12-29?21:51??res\
?????文件???????21630??2014-06-24?20:21??res\FTLDemo.ico
?????文件?????????363??2014-06-24?20:21??res\FTLDemo.rc2
?????文件???????15064??2015-12-19?16:24??resource.h
?????文件?????????166??2015-12-29?21:35??stdafx.cpp
?????文件????????2339??2015-12-29?21:40??stdafx.h
?????文件????????1739??2015-12-29?21:36??ThreadPage.h
?????文件???????16723??2015-12-29?21:42??ThreadPoolPage.cpp
?????文件????????3963??2015-12-29?21:36??ThreadPoolPage.h
- 上一篇:notepad++ json viewer
- 下一篇:智能決策支持系統---作戰防御
評論
共有 條評論