读书人

亲,有关问题的思路

发布时间: 2012-09-03 09:48:39 作者: rapoo

亲,求一个问题的思路
背景:主线程中创建了一个子线程,用于检查插件列表中插件是否可用,如果可用,启动;如果不可用,忽略。
这个子线程每两秒检查一次
插件是否可用的判断条件:从配置文件中读取出该插件的任务计划(某日某天某时执行一次,规则类似linux中的cron和windows中的任务计划,精确到分钟),看当前时间是否满足
例如 某插件的任务计划是每个周一的12点每分钟执行一次,即12:01执行一次,12:02执行一次。直到13点,不再执行,等待下一个周一的12点
由于检查规则精确到分钟,而子线程是2秒检查一次,那么就导致,满足条件的当前分钟会执行30次。而需求是满足条件的每分钟只执行一次.
求解.

[解决办法]
把每个插件上次运行的特征记录下来
比如 2012-08-16-12:01
下次判断时发现这个插件上次的运行标记还是 “2012-08-16-12:01”那就不运行

如果是每个小时执行一次,就构造 “2012-08-16-12”这样的标记

如果还有类似每个小时执行两次这样的,那就要为标记加上一个计数

如果有多种模式的计划混合,那就需要为插件保存多份特征
[解决办法]
建立一个结构,比如二维数组
为每一个插件进行编号并且记录上次运行时间

最好还能增加一个状态
这样在本分钟内检查过的插件,是否就可以不必再检查了呢?

这样只有分钟刷新后,才遍历一遍?

对于楼主的实际需求我理解的还不是很明白
[解决办法]
这很简单的嘛,一个BOOL变量,记录当前分钟是否已经执行过一次,执行了就不再执行

读书人网 >C++

热点推荐