定时采集时间控制方式

原创 2007年10月10日 10:09:00

定时采集时间控制方式探讨

 

       开发监控系统中经常会碰到数据采集模块的开发,本文探讨一下如何控制采集周期以获得更好的效果。

       周期控制方式分为三类:1。定时周期;2。固定等待周期;3。可变等待时间周期。

1.  定时周期:

定时周期方式指以定时器的方式定时启动采集线程。周期控制不受采集线程执行情况的影响,定时器以周期的方式定时开启新线程,而不管之前开启的线程是否已执行完成。这种方式的优点是周期控制的精确度只取决于计算机时钟精度及处理能力,可以很好的控制采集周期。但是当周期设置过相对采集线程运行时间过短,将会导致同一时间会存在几个并行的采集线程,可能会发生线程或资源冲突。

 

 

如图所示:共有6个时间节点,假设采集任务执行时间需要三个节点,而时间周期为1个节点,所以在34两个时间节点间可能存在三个任务并行执行的情况。如果执行时间更长,周期更短,那么并行的线程数会更多。

        这种方式适用于采集任务时间短于周期,且对时间精度要求高的应用中。采集任务时间长于周期的需要解决冲突问题。

 

 

2.  固定等待周期:

固定等待周期是指在任务执行前后的等待时间都为固定时间,这个时间称为周期,但并不是真正的周期。如下图所示,实际上的周期为采集任务执行时间加上周期等待时间,周期等待时间为固定时间,而且采集任务时间是可变的,因此也并不好缩短等待时间来控制周期。这种方式的好处是工作过程中可以以单线程的方式实现,不会发生线程或资源冲突的情况。但是时间精度不好,采集任务执行时间会累积起来影响采集周期,如图所假设采集任务执行时间为四分之一个周期,结果四次采集执行后占用了5个时间节点的时间,时间累积使得采集结果产生了时间间隙。假设以秒为单位的采集,可以在连续的34353637秒之间少掉了35秒的对应值,影响采集结果的计算。

        这种方式只适用于对时间精度要求不高的场合。

图中短黑箭头表示采任线程执行,线长红箭头表示周期等待时间。

 

 

3.  可变等待周期:

可变等待周期是指根据任务执行时间自动调整等待时间,以便获得较为合理的周期控制。经测试java.util.Timer属于这种方式。

        这种方式的基本思想是如果采集线程执行时间<周期,那么等待时间=周期—采集线程执行时间。如果采集线程执行时间>周期,那么等待时间为0,即不再等待,当然实际周期大于设定周期,将会导致以后的采集周期偏离预定周期,同样这种情况对计算也不利。

        这种方式可以自动调整等待时间,同样保持只有一个采集线程,在实际不稳定的环境中缺少很好的时间精度控制,但具有较好稳定性,是一种比较折中的办法。

 

 

STM32f103的数电采集电路的TIMER定时器的使用与时序控制的程序

STM32 的通用定时器是一个通过可编程预分频器(PSC)驱动的 16 位自动装载计数器(CNT)构成。STM32 的通用定时器可以被用于:测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较...
  • DevinTT
  • DevinTT
  • 2015年07月22日 14:45
  • 1609

总线操作与定时

总线定时:总线在双方交换数据的过程中需要时间上配合关系的控制。这种关系称为总线定时。实质是一种协议或规则。有同步与异步两种。传输的四个阶段: 申请分配:主模块提出申请,经过总线仲裁机构决定下一个传...
  • u011240016
  • u011240016
  • 2016年08月28日 17:28
  • 888

CPU的工作过程

CPU的基本工作是执行存储的指令序列,即程序。程序的执行过程实际上是不断地取出指令、分析指令、执行指令的过程。 CPU从存放程序的主存储器里取出一条指令,译码并执行这条指令,保存执行结果,紧接着又去...
  • zhongyi_yang
  • zhongyi_yang
  • 2015年05月28日 13:52
  • 352

单片机秒表程序(自动切换时间

单片机秒表程序
  • cjdsn
  • cjdsn
  • 2015年11月19日 16:11
  • 258

性能测试--如何设定定时开始性能测试

性能测试过程中有时候会需要进行长时间的负载测试或稳定性测试,或者有时候单纯只是需要通过性能测试增加系统的数据量。这些测试通常是在系统空闲的时候进行,如何充分利用系统空闲时间进行性能测试? 个人感觉定时...
  • flyaway_07
  • flyaway_07
  • 2015年12月22日 15:01
  • 1002

Python3 - 时间处理与定时任务

无论哪种编程语言,时间肯定都是非常重要的部分,今天来看一下python如何来处理时间和python定时任务,注意咯:本篇所讲是python3版本的实... 无论哪种编程语言,时间肯定都是非常...
  • walter_chan
  • walter_chan
  • 2016年06月30日 11:46
  • 2031

iOS中几种定时器 - 控制了时间,就控制了一切 第三个同步视图刷新

iOS中几种定时器 - 控制了时间,就控制了一切 2015-05-19 09:07 编辑: lansekuangtu 分类:iOS开发 来源:伯恩的遗产的简书 2  iOS定...
  • Calvin_CN
  • Calvin_CN
  • 2016年09月08日 15:49
  • 551

OpenStack之Nova分析——Nova Compute定时任务(一)

我们在分析虚拟机的创建和Nova Scheduler调度算法中,其实已经涉及到了Nova Compute服务的一些内容,不过Nova Compute服务完成的工作要更多。这篇文章我们来详细的分析一下N...
  • qiuhan0314
  • qiuhan0314
  • 2015年02月16日 09:05
  • 1297

php如何实现定时任务,php定时任务方法,最佳解决方案,php自动任务处理

定时任务对于php来说一直都是很多朋友的一个难题,但却很多地方都遇到了。 比如说: 游戏开发程序中,每隔10分钟给玩家发兵一次 sns社区中每隔20秒检测一下是否有人给我发消息 自动采集程序,...
  • u011125949
  • u011125949
  • 2014年09月25日 17:34
  • 3494

一种日志采集装置及方法

摘要 本发明提供了一种日志采集装置及方法,其中,日志采集装置包括:日志监控模块,用于监控当前服务器上的多个应用系统的日志文件;确定各日志文件新增的记录,并保存各日志文件以及新增的记录;数据传输服...
  • baidu_24932821
  • baidu_24932821
  • 2016年04月09日 13:52
  • 1887
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:定时采集时间控制方式
举报原因:
原因补充:

(最多只允许输入30个字)