高精度定时方法、装置、存储介质及处理器制造方法及图纸

技术编号:37777138 阅读:17 留言:0更新日期:2023-06-09 09:07
本申请实施例提供一种高精度定时方法、装置、存储介质及处理器,属于计算机技术领域,所述方法包括:定时器初始化,并设置定时参数;获取CPU的时钟频率;根据所述时钟频率和所述定时参数确定目标事件的预设间隔时钟周期计数;确定目标事件的当前间隔时钟周期计数;当所述当前间隔时钟周期计数大于或者等于所述预设间隔时钟周期计数时,通过信号量通知目标事件的工作线程。本申请实施例所述方法定时时间精度高,相比现有的毫秒级别的定时器,可以达到百纳秒的精度级别,能够有效提升定时精度。能够有效提升定时精度。能够有效提升定时精度。

【技术实现步骤摘要】
高精度定时方法、装置、存储介质及处理器


[0001]本申请涉及计算机
,具体涉及一种高精度定时方法、一种高精度定时装置、一种机器可读存储介质及一种处理器。

技术介绍

[0002]随着大数据的发展和企业信息化的需要,火电厂需要采集、处理的数据越来越庞大,数据管理粒度也越来越精细。这对于流程控制时间的精度提出更高的要求。
[0003]在工业生产控制过程中,有许多需要定时完成的操作,例如:定时显示当前时间,定时刷新屏幕上的进度条,上位机定时向下位机发送命令和传送数据,下位机定时向上位机传输生产数据和状态等。特别是在对控制性能要求较高的控制系统和数据采集系统中,就更需要进行精确定时操作。
[0004]然而,传统定时器,仅能达到毫秒级别的精度等级,这对于数据的精细化要求是远远不够的。

技术实现思路

[0005]本申请实施例的目的是提供一种高精度定时方法、装置、存储介质及处理器,以解决上述
技术介绍
中提出的问题。
[0006]为了实现上述目的,本申请第一方面提供一种高精度定时方法,所述方法包括:
[0007]定时器初始化,并设置定时参数;
[0008]获取CPU的时钟频率;
[0009]根据所述时钟频率和所述定时参数确定目标事件的预设间隔时钟周期计数;
[0010]确定目标事件的当前间隔时钟周期计数;
[0011]当所述当前间隔时钟周期计数大于或者等于所述预设间隔时钟周期计数时,通过信号量通知目标事件的工作线程。
[0012]在本申请实施例中,所述方法还包括:
[0013]当所述当前间隔时钟周期计数小于所述预设间隔时钟周期计数时,返回确定目标事件的当前间隔时钟周期计数的步骤。
[0014]在本申请实施例中,在所述通过信号量通知目标事件的工作线程之后,还包括:重置定时器,并返回确定目标事件的当前间隔时钟周期计数的步骤。
[0015]在本申请实施例中,所述获取CPU的时钟频率,包括:通过操作系统下的频率查询函数获取CPU的时钟频率。
[0016]在本申请实施例中,所述通过操作系统下的频率查询函数获取CPU的时钟频率,包括:通过windows系统下的QueryPerformanceFrequency()函数获取CPU的时钟频率。
[0017]在本申请实施例中,所述确定目标事件的当前间隔时钟周期计数,包括:获取所述目标事件的第一时钟周期计数以及第二时钟周期计数;基于所述第一时钟周期计数以及所述第二时钟周期计数,确定目标事件的当前间隔时钟周期计数。
[0018]在本申请实施例中,所述获取目标事件的第一时钟周期计数以及第二时钟周期计数,包括:通过windows系统下的QueryPerformanceCounter()函数获取所述目标事件的第一时钟周期计数以及第二时钟周期计数。
[0019]本申请第二方面提供一种高精度定时装置,所述装置包括:
[0020]初始化模块,用于定时器初始化,并设置定时参数;
[0021]时钟频率获取模块,用于获取CPU的时钟频率;
[0022]第一确定模块,用于根据所述时钟频率和所述定时参数确定目标事件的预设间隔时钟周期计数;
[0023]第二确定模块,用于确定目标事件的当前间隔时钟周期计数;
[0024]通知模块,用于当所述当前间隔时钟周期计数大于或者等于所述预设间隔时钟周期计数时,通过信号量通知目标事件的工作线程。
[0025]本申请第三方面提供一种处理器,被配置成执行上述的高精度定时方法。
[0026]本申请第四方面提供一种机器可读存储介质,该机器可读存储介质上存储有指令,该指令在被处理器执行时使得所述处理器被配置成执行上述的高精度定时方法。
[0027]与现有技术相比,本专利技术的上述技术方案具有如下有益效果:
[0028]本申请提供一种高精度定时方法、装置、存储介质及处理器,所述方法时间精度高,相比现有的毫秒级别的定时器,可以达到百纳秒的精度级别,能够有效提升定时精度。
[0029]本申请实施例的其它特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
[0030]附图是用来提供对本申请实施例的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本申请实施例,但并不构成对本申请实施例的限制。在附图中:
[0031]图1示意性示出了根据本申请实施例的高精度定时方法的流程示意图;
[0032]图2示意性示出了根据本申请实施例的高精度定时方法的整体流程示意图;
[0033]图3示意性示出了根据本申请实施例的定时器触发后采用Semaphore通知工作线程的示意图;
[0034]图4示意性示出了根据本申请实施例的创建定时器线程和工作线程的程序代码图;
[0035]图5示意性示出了根据本申请实施例的while循环检测时间的程序代码图;
[0036]图6示意性示出了根据本申请实施例的使用信标Semaphore作为消息队列的程序代码图;
[0037]图7示意性示出了根据本申请实施例的高精度定时装置的结构框图;
[0038]图8示意性示出了根据本申请实施例的计算机设备的内部结构图。
具体实施方式
[0039]本实施例针对数据采集设备和大数据处理模块之间强实时性的要求,通过windows系统API,实现了一种微秒级别精度的定时器。使用该定时器既可以以更小的时间粒度对数据传输和处理进行流程控制;也可以通过高精度的时间叠加,获取更快速的数据
传递和处理性能。
[0040]为了避免出现诸如使用WaitableTimer等内核对象发生的陷入内核引发的计时误差,我们这里使用了类似spinLock自旋锁的机制,在用户态自旋查询是否到时。这样虽然会占用一定的CPU资源,但是因为避免陷入内核,发生上下文切换,以牺牲算力换来了最高百纳秒的计时精度。
[0041]在使用中,为了在定时器线程和工作线程之间达到更好的解耦和消峰效果。计时器触发后采用Semaphore通知工作线程。这样既避免了工作线程的动作污染定时器线程,又保证了定时器触发的次数不因生产消费速率不一致导致丢失。
[0042]为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解的是,此处所描述的具体实施方式仅用于说明和解释本申请实施例,并不用于限制本申请实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0043]需要说明,若本申请实施例中有涉及方向性指示(诸如上、下、左、右、前、后
……
),则该方向性指示仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。
[0044]另外本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种高精度定时方法,其特征在于,所述方法包括:定时器初始化,并设置定时参数;获取CPU的时钟频率;根据所述时钟频率和所述定时参数确定目标事件的预设间隔时钟周期计数;确定目标事件的当前间隔时钟周期计数;当所述当前间隔时钟周期计数大于或者等于所述预设间隔时钟周期计数时,通过信号量通知目标事件的工作线程。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:当所述当前间隔时钟周期计数小于所述预设间隔时钟周期计数时,返回确定目标事件的当前间隔时钟周期计数的步骤。3.根据权利要求1所述的方法,其特征在于,在所述通过信号量通知目标事件的工作线程之后,还包括:重置定时器,并返回确定目标事件的当前间隔时钟周期计数的步骤。4.根据权利要求1所述的方法,其特征在于,所述获取CPU的时钟频率,包括:通过操作系统下的频率查询函数获取CPU的时钟频率。5.根据权利要求4所述的方法,其特征在于,所述通过操作系统下的频率查询函数获取CPU的时钟频率,包括:通过windows系统下的QueryPerformanceFrequency()函数获取CPU的时钟频率。6.根据权利要求1所述的方法,其特征在于,所述确定目标事件的当前间隔时钟周期计数,包括:获取所述...

【专利技术属性】
技术研发人员:史于心王兴兵高向东张东明安凤栓宫喜鹏
申请(专利权)人:国能智深控制技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1