YxdWorker 后台工作者管理库 (QWorker修改版)

感谢Swish群主(人见人爱花见花开),为了QWorker负出了很多时间和精力。

 --------------------------------------------------------------------
  说明
 --------------------------------------------------------------------
  YxdWorker 基于QDAC项目的QWorker ,并且绝大部分代码来自于此,
  感谢swish和他的QWorker,QDAC。YxdWorker 版权归swish, YangYxd所有
  QWorker来自QDAC项目,版权归swish(QQ:109867294)所有
  QDAC官方群:250530692
  QDAC官方网站: http://www.qdac.cc

 

SVN:  https://github.com/yangyxd/YxdWorker

【下载地址】:  http://pan.baidu.com/s/1ntJ1m9z   【提取密码】: ryrq


 --------------------------------------------------------------------
  更新记录
 --------------------------------------------------------------------

 2015.04.14 ver 1.1.6
 --------------------------------------------------------------------
  - TJob增加Handle属性,可以在作业中查看自己的Handle. 比如定时作业中,
    可以用Handle来取消任务.
  - 其它细小修改

 2015.04.03 ver 1.1.5
 --------------------------------------------------------------------
  - 修正了 GetTimeTick 函数溢出造成定时作业调度失败的问题 (同步QWorker)
  - 修正了 TQRepeatJobs.DoTimeCompare 比较时间时算术溢出,造成特定应用
    环境下出错的问题 (同步QWorker)
    
 2015.01.29 ver 1.1.4
 --------------------------------------------------------------------
  - TJobGroup.Cancel增加是否等待正在运行的作业结束参数
  - 修正了 TSimpleJobs.Clear 如果第一个就满足需要时算法逻辑出错的
    问题(KEN)

 2014.11.11 ver 1.1.3
 --------------------------------------------------------------------
  - 修复在Android平台中存在的Bug
  - 修改 TJobHandle 为 NativeInt,在64位时使用64位整数

 2014.11.08 ver 1.1.2
 --------------------------------------------------------------------
  - 将重复定时作业Data为自动释放时,由完成一次以后就释放改为直到作业
    被取消时才释放
  - 修正了Job.Assign时,忘记增加引用计数的问题

 2014.11.08 ver 1.1.1
 --------------------------------------------------------------------
  - 修改作业投寄 Post 的返回值为 TJobHandle 型, 用来唯一标记一项作
    业,可以在需要时调用Clear(句柄值)来清除相应的作业 (恢宏)
  - 将并行 For 移入 TYxdWorkers 中,直接使用 Workers.&For 即可
  - 增加 Job.ExData 扩展数据,可以使用 NewExData 初始化。
  - 修复定时循环作业且Data为自动释放时,完成一次以后Data已经被释放,
    但在下次触发时仍然存在这个Data的Bug.
  - 增加条件编译开关 AutoFreeJobExData, 启用时强制释放作业的ExData,
    不管FreeType是什么。

 2014.10.14 ver 1.1.0
 --------------------------------------------------------------------
  - 增加GetWorkerState方法,输出各工作者状态
  - 开启 Use_DebugHelper 编译开关时,需要引用 YxdMapFile,可查看作业
    的函数名称
  - 稳定版,修复所有已知BUG

 2014.09.29 ver 1.0.9
 --------------------------------------------------------------------
  - 增加并行 For, 访问方式为TForJobs.For(...) (同步QWorker)
  - 加入后台对CPU利用率的检查,在CPU占用率较低时且有需要立即处理的作
    业时,启动新工作者 (同步QWorker)
  - 修正了未达到工作者线程上限,但已创建的工作者都在工作中时可能造成
    的延迟问题  (同步QWorker)
  - 修改TQJobProc/TQJobProcA/TQJobProcG的写法,以便更方便阅读 (同步
    QWorker)
  - 修复所有已知BUG

 2014.09.10 ver 1.0.8
 --------------------------------------------------------------------
  - 修复TimeToDelay函数错误

 2014.09.05 ver 1.0.7
 --------------------------------------------------------------------
  - 修复JobGroup不能并行执行的BUG
  - 修改HasJobRunning函数,解决JobGroup执行时,由于每个Job运行时间很
    长导致Celar失败的问题。

 2014.08.30 ver 1.0.6
 --------------------------------------------------------------------
  - 修复开启定时作业后,线程回收机制失效BUG
  - 解决FBusyCount计数器相关的BUG
  - 提升稳定性,测速时速度下降,总体来说提升了性能

 2014.08.25 ver 1.0.5
 --------------------------------------------------------------------
  - 作业附加的Data释放方式新增jdfFreeAsC1~jdfFreeAsC6以便上层自己管理
    Data成员数据的自动释放
  - 优化FreeJob, FreeJobData
    
 2014.08.23 ver 1.0.4
 --------------------------------------------------------------------
  - 解决Busy计数器BUG

 2014.08.22 ver 1.0.3
 --------------------------------------------------------------------
  - 解决JobGroup超时和Cancel的问题,解决某些原因引起测速很慢的问题
  - 提取合并部分代码,减少体积

 2014.08.16 ver 1.0.2
 --------------------------------------------------------------------
  - 改进长时间任务处理方式 ,TSimpleJobs增加 FLongFirst,FLongLast 专
    门应对长时间任务,解决长时间任务导致Clear失败BUG
  - 同步QWorker修改TQJobGroup.AfterDone改为除了在完成时,在中断或超时
    时仍然触发
  - 同步QWorker增加TQJobGroup.Run函数加入超时设置,超过指定的时间如果
    仍未执行完成,则中止后续执行
  - 同步QWorker增加TQJobGroup.Cancel函数用于取消未执行的作业执行

 2014.08.16 ver 1.0.1
 --------------------------------------------------------------------
  - 增加 FOnErrorNotify通知事件,以便使用者可以记录相关日志
  - 将原QWorker中的Delay,At,Post合并为Post方法。
  - 将原QWorker中的时间精度由0.1ms调整为1ms.
  - 将原QWorker中TJobHelper的功能直接放入TJob中,以便在D2007中还能保
    持良好的语法提示
  - 将原QWorker中Worker类设置Flags相关功能改为GetValue,SetValue,减小
    单元大小
  - 对JobGroup的Add功能增加参数AFreeType, 并默认AInMainThread=False
  - 提取合并部分代码,减少单元大小
  - 删除Job中的Owner字段

 --------------------------------------------------------------------

 

使用方法很简单, 引用 YxdWorker.pas 单元, 使用 Workers.Post(XXXX) 就可以了。

 

转载于:https://www.cnblogs.com/yangyxd/articles/4693253.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值