【教程】对 TEvent 的一处增强

对于 TEvent 来说,如果是调用 WaitFor 等待超时时,如果程序退出时,事件仍在等待状态,就需要等待超时才能退出,造成程序退出时等待很长时间。要改进这一点,我们需要新版的 QWorker,它实现了一个 TAbortableEvent 的记录类型,然后支持取消操作。 TAbortableEvent 的增强在于:

[QWorker] 更新:修正了信号作业清理的一处问题,并更改了信号容器

【问题描述】 1、信号作业清理原来使用的哈希表忘记考虑哈希桶位置重复,造成未正确清理掉。 2、信号作业的容器由哈希表改为普通的数组,以提升效率(此业务场景更适合用普通的数组)。 【严重程度】 高 【更新级别】 推荐 【特别感谢】 MLSkin

[QWorker] 更新:增加信号的顺序触发并修正 Delay 函数存在的问题

【更新说明】 1、QWorker 的信号作业原来是触发时立即就会调度后台线程执行,这样存在的问题就是后触发的信号可能被先执行。而有些场景下,我们需要它们按照触发的顺序执行,所以 QWorker 对信号的触发这块做了一些额外的处理: 增加了一个 SignalQueue 属性,来管理信号触发队列,队列的默认大小为 4096

【付费教程】Delphi 下基于 QWorker 的多线程编程之三:实战

【价格】 以人民币计价: 个人用户:50元 企业用户:300元   【视频长度】 ≥ 51 分钟 【视频语言】 中文,普通话 【视频编码】 格式:H.264 MP4 分辨率:1364×768 【教程源码】 包含示例工程源码 【上架时间】 预计 2016 年 5 月 6 日 【付款方式】 申请加入 QDAC 视

[QWorker] 更新:修正了枚举作业状态的两处问题并修改了 At 函数一个重载的行为

【更新说明】 1、EnumJobStates 返回的运行中作业状态时,IsRunning 标志位设置不正确; 2、PeekJobState 正在运行作业的信息没有正确处理; 3、修改了 At 传递日期时间类型为参数的行为,原来忽略日期时间部分的日期部分,现在改为不忽略日期时间类型中的日期部分; 【严重程度】 中 【推荐

【付费教程】Delphi 下基于 QWorker 的多线程编程之二:进阶

本节是基于 QWorker 的多线程编程的四节课程的第二节,侧重讲解 QWorker 的教程基本用法。本视频以 Delphi 录制,但由于 Delphi 和 C++ Builder 使用同一 IDE,所以绝大部分内容同样适用于 C++ Builder。 【价格】 以人民币计价: 个人用户:50元 企业用户:300元 【

[QWorker]更新:修正了特定场景下,空闲工作者全部被解雇而引起的问题

【问题描述】 该问题是由于解雇策略没有考虑到长时间作业而引起的。比如,我们投递两个长时间作业和一个间隔时间很长的重复作业,然后如果长时间没有投递新的作业,由于其它工作者长时间无作业处理,会被自动解雇,只剩下最后两个长时间作业的工作者在工作,从而无法处理间隔时间很长的重复作业。 【严重程度】 高 【更新级别】 推荐 【特

[QWorker] Delay 函数新增 ARepeat 参数用来实现重复延迟作业

QWorker 提供了多种重复作业的支持,但是,如果一个作业执行的时间超过了重复间隔,下一次作业不会等待上一次作业结束就会执行,这在某些需求场景下会造成不便。以前我建议大家用人工调用 Delay 的方式来解决这一问题,现在不需要了,QWorker 的 Delay 函数增加了这样一个参数,来简化您的编程: 先看一下函数声

[QWorker] 更新:修正了 WaitJob 在特定场景下造成作业未及时处理的问题

【问题描述】 该问题是由于 WaitJob 在检查作业是否存在时,先出队了所有的未完成作业,然后在入队时,没有调用LookupIdleWorker 来查找空闲工作者来处理新的任务造成的。 【严重程度】 高 【更新级别】 可选 【特别感谢】 成浩

[QWorker] 制作多线程日志输出查看Demo

要解决的问题: 有多个线程输出日志,日志内容需要在列表框中显示出来,不管日志输出的频率快慢,界面不能卡,不能闪烁。超过10万行日志时,自动删除最开始的1万行日志。 此问题涉及多线程编程,多线程输出时要更新界面的显示。 多线程的东西,当然不能忘了QWorker这样的神器,下面我们就来使用QWorker解决问题,哦,不对,

[技巧] Pg2MSSQL数据同步工具简介

Pg2MSSQL是swish群主开发的一个可以同步PostgreSQL、MSSQL的工具软件,使用了我们熟悉的QWorker作为引擎,可以高效的并发执行数据库同步任务。 您可以到QDAC官方群或者本站下载页面找到Pg2MSSQL的下载地址,并免费使用部分功能。如果您觉得好用,可以和swish联系购买注册码。详细的注册信

[QWorker] 更新:修正了ClearJobState 对匿名函数支持的问题

【问题描述】 如果用 PeekJobState 或 EnumJobStates 枚举作业状态时,对应的作业处理函数为匿名函数,那么在调用对应的 ClearJobState / ClearJobStates 时,由于 ClearJobState 没有正确处理匿名函数的引用计数,造成内存泄露。 【严重程度】 高 【更新级别

[QWorker] 计划任务时,如果使用自己的工作日判定规则

QWorker 中默认的工作日判定规则是周一至周五为工作日,周六和周日为休息日,大多数情况下,这没有多大的问题。但是,可但是,无论那个国家,都有自己的法定节假日,将它们放在工作日里显示是不合适的。而做为一个底层的引擎,显示不适合只根据中国的规则来写死。反过来,你也没法写死,因为像我们国家,许多法定节假日是按照农历走的,

[QWorker] 使用 QWorker 做为计划任务引擎

QWorker 提供了 Plan 函数来提供计划任务功能的支持。每个任务做为一个作业,可以在指定的时间点被触发执行。而 cron 作为 Linux 操作系统下计划任务的标准被广大用户所熟知,QWorker 也就不再闭门造车,决定遵从这一规则。但是,可但是,通过百度后,你会发现有两个,一个是 crontab 标准,精确到

[QWorker] 更新 – 修正了一处Bug,同时修改计划任务的掩码规则

【更新内容】 * 修正了计划任务过时删除时,未正确清理计划任务列表造成任务列表不正确的问题 * 修改了计划任务的表达式规则,使用新找到的完整版 cron 表达式规则 + 计划任务支持精确到秒和限制年份,支持月内第几周的周几的规则,也支持月内倒数第几天,工作日等规则,详细规则请参考 QWorker 专题中关于计划任务的格

[QWorker] 使用QWorker的延迟功能快速断掉一个无效的TCP连接

TCP 协议经历了漫长的时间发展到现在,其连接到一个地址时,如果对方地址不存在而且没有 ICMP 协议返回目标不可达消息时,连接就会漫长的等待重试失败。这显然在网络带宽比 TCP 协议产生时高出不知道 N 倍的今天,是一个没有意义的等待,而当我们想要控制这个连接时间,我们会发现我们竟然无从下手(至少我不知道,也许你知道