资源简介
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
- 下一篇:智能决策支持系统---作战防御
评论
共有 条评论