定时执行专家 - 毫秒级精度、多线程并发检测触发算法,附详细代码

文章介绍了V6.4版的并行检测方案存在的问题,如线程负载不均,以及V6.5版通过划分触发器数量区间改进的并行检测策略,使得线程检测更均衡,提升了软件在高任务量下的效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

💠 需求背景

◆ V6.4版及之前的并行检测方案

◆ V6.4版及之前代码

◆ V6.4版及之前的并行检测方案存在的问题

 ◆ V6.5版的并行检测方案

◆ V6.5版代码

◆ V6.5版实现效果展示

◆ 定时执行专家 - 最新版下载


💠 需求背景

一些用户说任务数量可能达到200个,让我比较惊讶,这个软件的设计之初并没有考虑这么多的任务数量。考虑这个用户的需求,我重新调整了检测触发器触发的多线程并发的算法。具体算法调整细节本文详细解释如下。

◆ V6.4版及之前的并行检测方案

按照12种【触发器类型】创建 12个检测线程,每个线程负责一种触发器类型的触发检测。

触发器类型 触发检测线程
倒计时 CheckTriggerFireThread_1
伴随软件启动 CheckTriggerFireThread_2
空闲时间  CheckTriggerFireThread_3
间隔时间 CheckTriggerFireThread_4
具体时间 CheckTriggerFireThread_5
每分钟 CheckTriggerFireThread_6
每小时 CheckTriggerFireThread_7
每天 CheckTriggerFireThread_8
每周 CheckTriggerFireThread_9
每月 CheckTriggerFireThread_10
每年 CheckTriggerFireThread_11
Cron表达式 CheckTriggerFireThread_12

(表1,按照触发器种类,划分12个线程并发检查各类型触发器的触发条件)

◆ V6.4版及之前代码

按照触发器种类创建线程代码:

// start check firetime thread by trigger type

for (size_t i = 0; i< N_COUNT_TRIGGER_TYPE ; i++)
{
	CheckTriggerFireThread* pworkerthread = new CheckTriggerFireThread(this, (NTriggerType)i);

	if ( pworkerthread->Create() != wxTHREAD_NO_ERROR)
	{
		wxLogError(_("Can't create thread!"), _("Timing Executor"));
		return;
	}
	if ( pworkerthread->Ru
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值