QWorker ,一套开源的多线程并行编程框架,超级好用,谁用谁知道!
本帖最后由 comeheres 于 2015-1-31 16:04 编辑因为好用,所以推荐!
它可以做什么?
1、可以完成需要定时执行的作业,相当于一个多线程的定时器,如果运行在主线程,则它可以完全替代TTimer。2、可以完成延迟执行操作,不再依靠Sleep,你可以将计划更明确的分步骤延迟完成,写的代码更好看,更精炼。3、可以按信号触发某些操作,程序就不需要去轮询某些状态。而且通过信号触发,响应者可以有多个,而不是有一个,这样就可以完成事件的多播支持。4、可以按计划触发作业,计划的作业可以是一次性的,也可以按周期重复的。5、可以在主线程和后台作业之间方便的交互,后台线程的作业执行完成后,可以向主线程中简单的投寄通知和各类参数数据。6、方便的多步作业支持,分步完成,该多线程就多线程,该主线程就主线程,作业过程中,可以进一步触发更多的作业过程,子子孙孙无穷尽矣~~~。7、它还是一个自管理的线程池,动态根据需要增减线程的数量。作业在线程中被有序的调度执行。8、更多的用途还需要你自己去发现,我只是抛块砖,具体引来的是玉还是碎石,就看你自己的水平了。
以下摘自官方博客内容:
QWorker 是 QDAC 项目带给大家的一套多线程并行编程框架。它基于作业的视角来规划作业多线程编程,简化多线程编程的步骤和方法和交互手法。 首先,我们要明白我们为什么需要多线程并行编程?我们之所以使用多线程编程,一般目的不外乎下面两个: 1、避免程序界面假死带来的恶劣用户体验。 2、充分利用现代计算机的处理资源,来加快业务的处理速度。
当然,您可能有更好更多的理由来做多线程编程,但上面的这两个理由对于一般的人来说足够了。 接下来,一个新的问题来了,我们为什么要什么 QWorker 而不是系统自带的多线程框架来编程? 这个理由实际上很简单,使用 QWorker 会进一步简化你的编程逻辑的设计,使你更专注于业务流程的规划和实现,而不去管理线程池及处理资源的调度问题。 那么,什么是作业? 在 QWorker 中,所谓的作业就是一个逻辑上的业务处理单元。我们要实现一个复杂的任务时,可以将其分解成一到多个小的任务,每个任务由一个函数来管理,这个函数我们就可以将其理解为一项作业,而这些函数的组合就构成了一个作业分组。作业我们可以让其运行在主线程或者后台线程,注意一点,主线程不适合进行长时间作业,那样会造成主线程阻塞,造成假死的现象,影响用户体验。 现在看看,QWorker 为我们提供了什么呢?
1、一个跨平台的异步执行体系 一旦我们通过 Workers.Post 直接来投寄一个异步作业,这个作业将在后台被计划执行。2、一个跨平台的计划任务框架 通过 At 函数,可以满足作业定时执行的需求。3、一个高精度的后台线程定时器 通过 Post 时设置重复间隔,可以简单的生成一个定时重复作业,实现后台线程定时器的效果。4、一个松散耦合的业务框架 通过信号建立不同模块的不同单元的联系,可以很好的实现模块间的松散耦合和自动触发。5、一个流程管理框架 通过作业组(TQJobGroup)可以将多个作业管理在一起,然后串行或并行执行,并在全部作业执行完成时,得到相应的事件通知,当然也可以等待全部作业执行完成。6、一个并行操作引擎 通过 Workers.For 可以并行循环执行同一个过程,而直接Post到后台的作业,也会被计划成并行执行。7、一个线程池 QWorker 提供了一个自动管理线程生命周期的线程池。当然如上所述,它的功能远不止于此。
具体介绍、使用技巧、实例、教程可见QDAC官方网站的文章:http://blog.qdac.cc/?p=191
最新版本下载地址:http://blog.qdac.cc/?page_id=139
【教程】基于 QWorker 的多线程编程专题 PDF下载 http://pan.baidu.com/s/1sjQCgy
关于QDAC组件项目,可详见官方http://blog.qdac.cc/?page_id=2
支持了 谢谢分享
页:
[1]