[發明專利]一種無累計誤差的定時器控制方法在審
| 申請號: | 201310357952.4 | 申請日: | 2013-08-16 |
| 公開(公告)號: | CN103455402A | 公開(公告)日: | 2013-12-18 |
| 發明(設計)人: | 陳華云;鄭振貴;韋昌榮;鄭福弟;劉偉峰;黃杭星 | 申請(專利權)人: | 廈門雅迅網絡股份有限公司 |
| 主分類號: | G06F11/28 | 分類號: | G06F11/28 |
| 代理公司: | 廈門市誠得知識產權代理事務所(普通合伙) 35209 | 代理人: | 李伊飏 |
| 地址: | 361000 福建*** | 國省代碼: | 福建;35 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 累計 誤差 定時器 控制 方法 | ||
技術領域
本發明涉及一種在計算機軟件或者通信領域中無累計誤差的定時器控制方法。
背景技術
在軟件開發或者通信領域中經常有用到定時執行某項操作的功能,就是要在固定時間間隔去執行固定的操作。因此要用到定時器技術。
為了提高軟件的可移植性,也為了能夠同時實現多定時器的管理,因此定時器的實現一般都是程序自己來組織和管理,形成一個定時器管理器。不過當前的一些定時器都存在著累計誤差,長時間定時將導致精度降低。累計誤差基本都是出現以下兩種情況:
1、在定時器管理器中注冊一個定時器,然后定時查詢該定時器的時間是否到達,當到達后就調用該定時器的回調函數執行相應的操作。然后再定時判斷。
傳統的單個定時器的流程如下圖1所示:以1s定時為例,從0秒開始定時。由圖1可以看出,回調函數的執行需要時間。如果要求1秒鐘定時一次,100秒就需要執行100次的回調函數,可是由于回調函數需要有執行時間,累計下來后,100秒實際只能執行99次的回調函數,達不到要求,就造成定時誤差、精度不夠的問題。
2、定時器管理器中本身指令執行也會造成時間開銷,這樣也會造成累計誤差。
為此,現有技術中給出了一些對定時器的累計誤差進行校正的方案。例如申請號為200310112261.4的發明專利,公開了一種校正實時定時器之方法,其首先讀取平均校正量、系統目前時間、以及前次校正時間,再根據公式得到累計誤差值,此公式包含平均校正量、系統目前時間以及前次校正時間,再將前次校正時間設定并存儲為系統目前時間,接著利用累計誤差值調整系統目前時間,最后儲存系統目前時間。該發明的主要目的是校正系統的時間,而系統時間的誤差是由系統關機到下次開機之間造成,因為在關機的時候使用的是系統的實時時鐘,由于硬件的原理才導致不準了。因此,該發明的主要目的是校正由于硬件導致的誤差,對于軟件運行中由于回調函數的執行時間而導致軟件方面的定時器誤差則沒有提到。
再例如申請號為200610147438.8的發明專利,其公開了一種無積累誤差和自適應定時器實現方法,該發明包括以下過程:獲取當前的初始時間值,執行次數m清零;獲取當前系統時間T1,將其作為本次執行的起始時間;執行任務,執行次數m增加1;用執行周期T10乘以執行次數m,得到理論執行總時間T4;用當前的系統時間值T50,減去初始時間值T0,得到實際的執行總時間T5;用理論執行總時間T4減去實際的執行總時間T5,得到需要休眠的總時間T6;如果需要休眠的總時間大于0,執行休眠,休眠時間結束后喚醒,然后判斷是否需要修改執行周期,如果是,則修改執行周期,重啟定時器。該發明可以通過類似積分的方式進行補償,從而實現消除累計誤差的目的,并消除單次的大擾動,且執行周期可動態調節。該發明具有以下不足:1、使用系統時間,如果某一時刻系統時間被改變了,則會使定時器混亂,無法正常工作,即無精度可言。2、該發明沒有說明如何調用執行函數執行任務,就是定時器的回調函數。只說明由一個線程或進程執行。這樣可能會造成執行的實時性問題,就是定時時間到了,可是卻沒有立馬去執行回調函數,造成定時精度下降問題。3、定時器本身執行的指令所需的耗時沒有計算在內,只是用估算的方式。這樣就無法精確計算定時器本身指令執行的時間,因為不同的CPU頻率不同,執行一條指令的時間也跟著不同。而定時器本身指令的執行時間也會造成長時間定時的累計誤差。
在例如申請號?200710163912.0的發明專利,公開了一種提高定時器精度的方法,該方法包括以下過程:對比定時器計時參考點與相應的系統時間參考點所獲差值,休眠補償休眠時長且調整下一定時器計時周期休眠時長。該發明雖然在一定程度上提高了定時器精度,能避免實際定時器計時周期與理論定時器計時周期之間存在的誤差隨著循環次數增加而逐漸累積的問題,但是其具體方法是利用定時器的下次周期來補償這一次的定時誤差,同樣也有如下幾個不足:1、使用系統時間,如果某一時刻系統時間被改變了,則會使定時器混亂,無法正常工作,即無精度可言。2、按該發明的描述,每一次的定時都要進行補償,可見定時器本身的誤差就很大,連單次定時都不準。假使有個定時功能需要一秒鐘執行一次操作,由于該定時器使用補償或者刪減的操作,可能導致一秒鐘內執行兩次操作,可能在0.1秒和0.9秒的時間內都執行到了,可見會影響定時器的精度。3、該發明未說明如何調用執行函數執行任務,就是定時器的回調函數。假使定時周期為1秒,而回調函數執行了1.5秒。那么就可能導致其中的一個定時執行操作丟掉了,導致定時器錯誤問題。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于廈門雅迅網絡股份有限公司,未經廈門雅迅網絡股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310357952.4/2.html,轉載請聲明來源鉆瓜專利網。





