- 博客(1)
- 资源 (4)
- 收藏
- 关注
原创 TaskThread类库简介
近日灵感飙升,突发奇想,模拟操作系统调度进程的方式写了个调度函数的类库,暂称为TaskThread,此类皆组合或继承自TTaskThread类,它们是一种奇妙的类,它们可以把一个一个的现成函数当成一个“process"强行塞入TaskThread的线程运行,用户不再需要额外初始化线程类。本函数库甚至能模拟操作系统的方式对“任务函数”进行调度运行,目前的策略支持批处理和并行模式,类似OS的批
2008-11-27 11:30:00 1495
改进的tinyxml
可以直接读取string可以直接读取string可以直接读取string可以直接读取string可以直接读取string可以直接读取string可以直接读取string可以直接读取string可以直接读取string可以直接读取string可以直接读取string可以直接读取string可以直接读取string
2009-10-12
TaskThread
近日灵感飙升,突发奇想,模拟操作系统调度进程的方式写了个调度函数的类库,暂称为TaskThread,此类皆组合或继承自TTaskThread类,它们是一种奇妙的类,它们可以把一个一个的现成函数当成一个“process"强行塞入TaskThread的线程运行,用户不再需要额外初始化线程类。本函数库甚至能模拟操作系统的方式对“任务函数”进行调度运行,目前的策略支持批处理和并行模式,类似OS的批处理文件运行和多任务并发执行。为了便于C++用户者使用,除了对普通函数实现了“任务化”管理之外,本类库所有任务类均实现了对C++类函数作“任务化”管理的TClassTaskThread另一系列版本。
TTaskThread类库总共包括了大大小小几十个类,提供了跨平台(目前只实现的windows)的线程、互斥等基础类,主要实现功能的类是TClassTaskThread系列类,最多带9个参数的函数或类函数的任务管理,以下是类继承关系。
以下是类继承关系图
-TThreadMutex 互斥类
-TSimpleThread 基础线程类
-TClassTaskThread 运行类函数的任务类基类
-TClassNoRetNoArgTaskThread
-TClassNoRet1ArgTaskThread
-TClassNoRet2ArgTaskThread
...直到支持9个参数的无返回类函数任务类
-TTaskThread 运行普通函数任务类基类
-TNoRetNoArgTaskThread
-TNoRet1ArgTaskThread
-TNoRet2ArgTaskThread
......直到支持9个参数的无返回函数任务类
-TMutiTaskThread9BatchFacet 批处理运行适应类
-TMutiTaskThread9ParallelFacet并行运行适应类
-TClassMutiTaskThread9BatchFacet 批处理运行适应类 (类函数)
-TClassMutiTaskThread9ParallelFacet并行运行适应类 (类函数)
-TMutiTaskThread9 多任务管理器类
-TClassMutiTaskThread9 多任务管理器类 (类函数)
-TMutiTaskThread9<TMutiTaskThread9BatchFacet> TBatchTaskThreads批处理管理器类
-TMutiTaskThread9<TMutiTaskThread9ParallelFacet> TParallelTaskThreads并行管理器类
-TClassMutiTaskThread9<TClassMutiTaskThread9BatchFacet> TClassBatchTaskThreads批处理管理器类 (类函数)
-TClassMutiTaskThread9<TClassMutiTaskThread9ParallelFacet> TClassParallelTaskThreads并行管理器类 (类函数)
源代码因为大量使用模板、类函数指针等高级的C++特性,因此需要比较新版,接近C99标准的C++编译器,笔者是使用Borland C++ 6编译通过。
以下是一个管理批处理任务的使用示例:
int c=0;
void AsignC()
{
c=a+b;
}
int negtive(int d)
{
return -d;
}
TBatchTaskThreads tbth9;
tbth9.PushBackTaskNoRet(AsignC);
tbth9.PushBackTaskRet<int,int>(negtive,112);
tbth9.PushBackTaskRet<int,int>(negtive,9);
tbth9.Start();
tbth9.WaitForMutiTask();
ShowMessage(IntToStr(GetTickCount()-curtime));
ShowMessage(IntToStr(c));
int testi=tbth9.GetRunedRet<int>(1);
ShowMessage(IntToStr(testi));
testi=tbth9.GetRunedRet<int>(2);
ShowMessage(IntToStr(testi));
tbth9.ClearTask();
可以看出,用户只需要把待批处理运行的函数按次序塞入tbth9,然后运行Start,再WaitForMutiTask,之后就可以按照需要取回函数运行结果。可见,TBatchTaskThreads 调用方式是非常简单的。
并行方式的调用方式类似,不再赘述。
以下是完整的源代码,有兴趣者可以复制并散播,但请不要去掉文件头的版权信息,请尊重作者的精神享有权。
笔者手中还有完整的C++Builder 6的DEMO演示例程,如有兴趣,请email至superyys@163.com索取,绝不吝啬。
2008-11-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人