本發(fā)明屬于計算機(jī)軟件領(lǐng)域,尤其涉及一種處理計時器計時異常的方法、裝置及計算機(jī)可讀存儲介質(zhì)。
背景技術(shù):
在計算機(jī)軟件的事務(wù)處理編程中,經(jīng)常會啟用一些計時器來對某個事務(wù)的進(jìn)行時間計時。若超過計時器設(shè)定的超時時間,則會處理判斷的一個分支,否則,還是停留在原來的事務(wù)。顯然,在這類事務(wù)的編程中,計時器的計時不能出現(xiàn)異常。一旦出現(xiàn)異常,邏輯的執(zhí)行將會偏離軟件開發(fā)人員預(yù)期的結(jié)果。然而,計時器的位元寬度總是有限的(通常是32位字長)、所采用的編程語言的數(shù)據(jù)寬度也是有限的,因而有可能發(fā)生計時器的計時溢出和/或回繞等異常,從而導(dǎo)致超時判斷的代碼出現(xiàn)判斷異常,最終導(dǎo)致程序運(yùn)行出現(xiàn)異常。
以上問題亟待解決。
技術(shù)實現(xiàn)要素:
本發(fā)明提供一種處理計時器計時異常的方法、裝置及計算機(jī)可讀存儲介質(zhì),以防止計時器計時異常導(dǎo)致的程序運(yùn)行異常。
本發(fā)明第一方面提供了一種處理計時器計時異常的方法,包括:
定義一變量t0;
在超時判斷這一邏輯的代碼執(zhí)行前,通過調(diào)用計時函數(shù)將所述計時函數(shù)的返回值t’賦給所述變量t0,所述計時函數(shù)的返回值t’的數(shù)據(jù)寬度不大于所述變量t0的數(shù)據(jù)寬度;
執(zhí)行防止所述變量t0、所述返回值t’或所述變量t0與返回值t’之和溢出和/或回繞導(dǎo)致邏輯錯誤的操作。
本發(fā)明第二方面提供了一種處理計時器計時異常的裝置,包括:
變量定義模塊,用于定義一變量t0;
賦值模塊,用于在所述超時判斷這一邏輯的代碼執(zhí)行前,通過調(diào)用計時函數(shù)將所述計時函數(shù)的返回值t’賦給所述變量t0,所述計時函數(shù)的返回值t’的數(shù)據(jù)寬度不大于所述變量t0的數(shù)據(jù)寬度;
執(zhí)行模塊,用于執(zhí)行防止所述變量t0、所述返回值t’或所述變量t0與返回值t’之和溢出和/或回繞導(dǎo)致邏輯錯誤的操作。
本發(fā)明實施例的第三方面提供了一種計算設(shè)備,包括存儲器、處理器以及存儲在存儲器中并可在處理器上運(yùn)行的計算機(jī)程序,處理器執(zhí)行計算機(jī)程序時實現(xiàn)以下步驟:
定義一變量t0;
在超時判斷這一邏輯的代碼執(zhí)行前,通過調(diào)用計時函數(shù)將所述計時函數(shù)的返回值t’賦給所述變量t0,所述計時函數(shù)的返回值t’的數(shù)據(jù)寬度不大于所述變量t0的數(shù)據(jù)寬度;
執(zhí)行防止所述變量t0、所述返回值t’或所述變量t0與返回值t’之和溢出和/或回繞導(dǎo)致邏輯錯誤的操作。
本發(fā)明實施例的第四方面提供了一種全景圖像拼接的計算機(jī)可讀存儲介質(zhì),計算機(jī)可讀存儲介質(zhì)存儲有計算機(jī)程序,計算機(jī)程序被處理器執(zhí)行時實現(xiàn)以下步驟:
定義一變量t0;
在超時判斷這一邏輯的代碼執(zhí)行前,通過調(diào)用計時函數(shù)將所述計時函數(shù)的返回值t’賦給所述變量t0,所述計時函數(shù)的返回值t’的數(shù)據(jù)寬度不大于所述變量t0的數(shù)據(jù)寬度;
執(zhí)行防止所述變量t0、所述返回值t’或所述變量t0與返回值t’之和溢出和/或回繞導(dǎo)致邏輯錯誤的操作。
從上述本發(fā)明提供的技術(shù)方案可知,變量t0的定義和賦值都在超時判斷這一邏輯的代碼執(zhí)行前實施,與現(xiàn)有技術(shù)相比,本發(fā)明提供的技術(shù)方案執(zhí)行防止變量t0、返回值t’或變量t0與返回值t’之和溢出和/或回繞導(dǎo)致邏輯錯誤的操作,從而能夠在計時器發(fā)生溢出和/或回繞時仍然可以準(zhǔn)確地進(jìn)行超時判斷,使得程序按照正確的邏輯運(yùn)行。
附圖說明
為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實施例提供的處理計時器計時異常的方法的實現(xiàn)流程示意圖;
圖2是本發(fā)明實施例提供的處理計時器計時異常的裝置的結(jié)構(gòu)示意圖;
圖3是本發(fā)明另一實施例提供的處理計時器計時異常的裝置的結(jié)構(gòu)示意圖;
圖4是本發(fā)明另一實施例提供的處理計時器計時異常的裝置的結(jié)構(gòu)示意圖;
圖5是本發(fā)明實施例提供的計算設(shè)備的結(jié)構(gòu)示意圖。
具體實施方式
以下描述中,為了說明而不是為了限定,提出了諸如特定系統(tǒng)結(jié)構(gòu)、技術(shù)之類的具體細(xì)節(jié),以便透徹理解本發(fā)明實施例。然而,本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)清楚,在沒有這些具體細(xì)節(jié)的其它實施例中也可以實現(xiàn)本發(fā)明。在其它情況中,省略對眾所周知的系統(tǒng)、裝置、電路以及方法的詳細(xì)說明,以免不必要的細(xì)節(jié)妨礙本發(fā)明的描述。
為了說明本發(fā)明的技術(shù)方案,下面通過具體實施例來進(jìn)行說明。
附圖1是本發(fā)明實施例提供的處理計時器計時異常的方法的實現(xiàn)流程示意圖,主要包括以下步驟s101至s103,詳細(xì)說明如下:
s101,定義一變量t0。
其中,變量t0可定義在整個程序代碼中位于實現(xiàn)超時判斷這一邏輯的代碼之前的位置。
s102,在超時判斷這一邏輯的代碼執(zhí)行前,通過調(diào)用計時函數(shù)將計時函數(shù)的返回值t’賦給變量t0,其中,計時函數(shù)的返回值t’的數(shù)據(jù)寬度不大于變量t0的數(shù)據(jù)寬度。
在本發(fā)明實施例中,可以在定義一變量t0之前,在系統(tǒng)層實現(xiàn)計時函數(shù),以后供后續(xù)調(diào)用。需要說明的是,為了確保計時精度,在系統(tǒng)層實現(xiàn)計時函數(shù)具體可以是采用硬件計時器在系統(tǒng)層實現(xiàn)計時函數(shù);計時函數(shù)的返回值用t’表示。
在本發(fā)明實施例中,計時函數(shù)的返回值t’的數(shù)據(jù)寬度不大于變量t0的數(shù)據(jù)寬度;可以將返回值t’和變量t0都定義為無符號長整型。以c語言實現(xiàn)為例,假設(shè)計時函數(shù)用getelapsedtime()表示,則在程序的代碼中,unsignedlongt0和unsignedlonggetelapsedtime()表示將計時函數(shù)的返回值t’和變量t0都定義為無符號長整型。例如,假設(shè)返回值t’和變量t0的數(shù)據(jù)寬度為4字節(jié),則計時函數(shù)getelapsedtimeo()的返回值t’到達(dá)0xffffffff后,再次計時時回繞到0,即,若計時函數(shù)getelapsedtimeo()每計時一次,其返回值t’增1,則在返回值t’增加至0xffffffff后,計時函數(shù)getelapsedtimeo()再計時時,則計時器溢出,其返回值t’變?yōu)?。
s103,執(zhí)行防止變量t0、返回值t’或變量t0與返回值t’之和溢出和/或回繞導(dǎo)致邏輯錯誤的操作。
現(xiàn)有技術(shù)中,對于事務(wù)處理編程中需要超時判斷時,進(jìn)行超時判斷的方法是:先從系統(tǒng)層的計時器中獲取當(dāng)前時間作為起始的計時基準(zhǔn)值初值t0;再不斷地輪詢當(dāng)前時間是否超過計時基準(zhǔn)值t0與指定的超時時限t之和。為了便于說明,以下都統(tǒng)一用t表示計時器設(shè)定的超時時限。編程語言c為例,現(xiàn)有技術(shù)的實現(xiàn)如下(其中,“//”后的自然語言是對c語言的解釋,下同):
#definet9000;//指定的超時時限,9000毫秒;
unsignedlongt0;
t0=gettickcount();//獲取程序運(yùn)行的設(shè)備從開機(jī)至計時函數(shù)被調(diào)用時所經(jīng)歷的時長(假設(shè)以毫秒為單位),gettickcount()為計時函數(shù),其返回值t’為計時器的計時值;
while(1)
{
if(gettickcount()>t0+t)break;
語句1;
語句2;
…
}
…
當(dāng)計時器不發(fā)生溢出和回繞時,上述現(xiàn)有技術(shù)提供的超時判斷的邏輯不會出現(xiàn)問題。若計時器發(fā)生溢出和/或回繞,則判斷邏輯將出現(xiàn)異常,以下是計時器發(fā)生溢出和/或回繞時導(dǎo)致的兩種異常情況:
1)若t0未發(fā)生溢出和/或回繞、但t0+t發(fā)生溢出和/或回繞時,就會得出誤超時的判斷,即:while循環(huán)剛剛開始,if判斷的條件就為真。例如(假設(shè)t0和t的數(shù)據(jù)寬度是4字節(jié)無符號整型數(shù),下同):
若t0=0xfffffff0;
t=9000;
則t0+t=8984;//t0+t的值發(fā)生溢出,回繞到8984;
假設(shè)在while循環(huán)判斷中,當(dāng)gettickcount()首次被調(diào)用時取值為0xfffffff0,則0xfffffff0>0xfffffff0+9000成立,即按照上述c語言示例的超時判斷的方法,if(gettickcount()>t0+t)的條件為“真”,程序判斷超時時限到達(dá),使用break語句跳出while循環(huán)。然而,實際上計時器的超時時限并未到達(dá),因此,導(dǎo)致了程序的邏輯錯誤。
2)若t0+t未發(fā)生溢出和/或回繞、但循環(huán)判斷中首次取時值時發(fā)生溢出和/或回繞,就會出現(xiàn)遲遲不會超時退出的假死機(jī)異常,即:事實上計時器的超時時限已到,if判斷的條件仍然為“假”。例如:
若t0=0xfffffff0;
t=10;
則t0+t=0xfffffffa
假設(shè)當(dāng)gettickcount()在循環(huán)中首次調(diào)用時取值發(fā)生溢出,其返回值回繞到0,則0>0xfffffffa不成立,即,按照上述c語言示例的超時判斷的方法,if(gettickcount()>t0+t)的條件為“假”,程序判斷超時時限尚未到達(dá)。此后,需要等到計時器的再次計時到0xfffffffb即gettickcount()的返回值再次變?yōu)?xfffffffb時,if(gettickcount()>t0+t)的條件為“真”時,程序才判斷超時時限到達(dá),使用break語句跳出while循環(huán)。然而,計時器從計時值是0計時到計時值是0xfffffffb,這段時間遠(yuǎn)遠(yuǎn)大于指定的超時時限,因而非常漫長,實際上與程序死機(jī)的現(xiàn)象類似。
為了解決上述現(xiàn)有技術(shù)在超時判斷時計時器的溢出和/或回繞導(dǎo)致的程序運(yùn)行異常,作為本發(fā)明一個實施例,執(zhí)行防止變量t0、返回值t’或變量t0與返回值t’之和溢出和/或回繞導(dǎo)致邏輯錯誤的操作可以通過如下步驟s1031和s1032實現(xiàn):
s1031,循環(huán)判斷返回值t’與變量t0之差是否大于常量t,其中,常量t為指定的超時時限。
與現(xiàn)有技術(shù)類似,在本發(fā)明實施例中,計時函數(shù)的返回值t’表示從程序運(yùn)行的設(shè)備從開機(jī)至該計時函數(shù)被調(diào)用時所經(jīng)歷的時長。與現(xiàn)有技術(shù)不同的是,本發(fā)明提供的技術(shù)方案循環(huán)判斷計時函數(shù)的返回值t’與變量t0之差是否大于指定的超時時限即常量t,而不是循環(huán)判斷計時函數(shù)的返回值t’是否大于變量t0與常量t之差。
具體地,步驟s1031可通過如下步驟s’1至s’5實現(xiàn):
s’1,設(shè)定循環(huán)條件為“真”;
s’2,調(diào)用計時函數(shù);
s’3,判斷計時函數(shù)的返回值t’與變量t0之差是否大于常量t;
s’4,若計時函數(shù)的返回值t’與變量t0之差不大于常量t,則執(zhí)行循環(huán)體之內(nèi)代碼對應(yīng)的邏輯;
s’5,判斷循環(huán)條件是否為“真”。
s1032,若返回值t’與變量t0之差大于常量t,則跳出循環(huán)。
為了便于說明,以c語言的while和if語句實現(xiàn)循環(huán)判斷為例。
以下是系統(tǒng)層實現(xiàn)計時函數(shù)的示例,假設(shè)應(yīng)用層需要毫秒精度的計時函數(shù)。示例中的系統(tǒng)層實現(xiàn)了一個計時器中斷服務(wù)程序,該計時器的計時周期是1毫秒。
以下示例應(yīng)用層實現(xiàn)超時判斷的代碼片段:
假設(shè)t0沒有回繞,且其值為0xfffffff0,即t0=0xfffffff0,而計時函數(shù)getelaspedtime()的返回值發(fā)生了回繞,假設(shè)回繞到1,即getelaspedtime()=1。由于t0和getelaspedtime()的返回值都是4字節(jié)無符號長整型,因此,若按照現(xiàn)有技術(shù),if(getelaspedtime()>t+t0)中的判斷條件為“假”,即,getelaspedtime()>t+t0不成立,于是仍然執(zhí)行循環(huán)體之內(nèi)的代碼對應(yīng)的邏輯(即執(zhí)行語句1、語句2、…),與計時器的超時時限已經(jīng)到達(dá)、程序預(yù)期的執(zhí)行邏輯是跳出while循環(huán)不符,而按照本發(fā)明提供的技術(shù),if(getelaspedtime()-t0>t)中的判斷條件為“真”,即getelaspedtime()-t0>t成立,因此跳出循環(huán)while,與計時器的超時時限已經(jīng)到達(dá),程序預(yù)期的執(zhí)行邏輯是跳出循環(huán)相符。
從上述附圖1示例的處理計時器計時異常的方法可知,變量t0的定義和賦值都在超時判斷這一邏輯的代碼執(zhí)行前實施,與現(xiàn)有技術(shù)相比,本發(fā)明提供的技術(shù)方案執(zhí)行防止變量t0、返回值t’或變量t0與返回值t’之和溢出和/或回繞導(dǎo)致邏輯錯誤的操作,從而能夠在計時器發(fā)生溢出和/或回繞時仍然可以準(zhǔn)確地進(jìn)行超時判斷,使得程序按照正確的邏輯運(yùn)行。
圖2是本發(fā)明實施例提供的處理計時器計時異常的裝置的示意圖,其可以是一計算設(shè)備或者其中的功能模塊。圖2示例的處理計時器計時異常的裝置主要包括變量定義模塊201、賦值模塊202和執(zhí)行模塊203,詳細(xì)說明如下:
變量定義模塊201,用于定義一變量t0,其中,變量t0在整個程序代碼中位于實現(xiàn)超時判斷這一邏輯的代碼之前的位置;
賦值模塊202,用于在超時判斷這一邏輯的代碼執(zhí)行前,通過調(diào)用計時函數(shù)將所述計時函數(shù)的返回值t’賦給變量t0,其中,計時函數(shù)的返回值t’的數(shù)據(jù)寬度不大于變量t0的數(shù)據(jù)寬度;
執(zhí)行模塊203,用于執(zhí)行防止變量t0、返回值t’或變量t0與返回值t’之和溢出和/或回繞導(dǎo)致邏輯錯誤的操作。
需要說明的是,本發(fā)明實施例提供的裝置,由于與本發(fā)明方法實施例基于同一構(gòu)思,其帶來的技術(shù)效果與本發(fā)明方法實施例相同,具體內(nèi)容可參見本發(fā)明方法實施例中的敘述,此處不再贅述。
附圖2示例的處理計時器計時異常的裝置中,計時函數(shù)的返回值t’表示從程序運(yùn)行的設(shè)備從開機(jī)至計時函數(shù)被調(diào)用時所經(jīng)歷的時長,附圖2示例的執(zhí)行模塊203包括循環(huán)判斷單元301和循環(huán)跳出單元302,如附圖3示例的處理計時器計時異常的裝置,其中:
循環(huán)判斷單元301,用于循環(huán)判斷計時函數(shù)的返回值t’與變量t0之差是否大于常量t,其中,常量t為指定的超時時限;
循環(huán)跳出單元302,用于若計時函數(shù)的返回值t’與變量t0之差大于常量t,則跳出循環(huán)。
附圖3示例的循環(huán)判斷單元301包括設(shè)定單元401、調(diào)用單元402、第一判斷單元403、邏輯執(zhí)行單元404和第二判斷單元405,如附圖4示例的處理計時器計時異常的裝置,其中:
設(shè)定單元401,用于設(shè)定循環(huán)條件為“真”;
調(diào)用單元402,用于調(diào)用計時函數(shù);
第一判斷單元403,用于判斷計時函數(shù)的返回值t’與變量t0之差是否大于常量t;
邏輯執(zhí)行單元404,用于若第一判斷單元403的判斷結(jié)果為計時函數(shù)的返回值t’與變量t0之差不大于常量t,則執(zhí)行循環(huán)體之內(nèi)的代碼對應(yīng)的邏輯;
第二判斷單元405,用于判斷所述循環(huán)條件是否為“真”
圖5是本發(fā)明一實施例提供的計算設(shè)備的結(jié)構(gòu)示意圖。如圖5所示,該實施例的計算設(shè)備5包括:處理器50、存儲器51以及存儲在存儲器51中并可在處理器50上運(yùn)行的計算機(jī)程序52,例如處理計時器計時異常的方法的程序。處理器50執(zhí)行計算機(jī)程序52時實現(xiàn)上述處理計時器計時異常的方法實施例中的步驟,例如圖1所示的步驟s101至s103?;蛘?,處理器50執(zhí)行計算機(jī)程序52時實現(xiàn)上述各裝置實施例中各模塊/單元的功能,例如圖2所示變量定義模塊201、賦值模塊202和執(zhí)行模塊203的功能。
示例性的,處理計時器計時異常的方法的計算機(jī)程序52主要包括:定義一變量t0;在所述超時判斷這一邏輯的代碼執(zhí)行前,通過調(diào)用計時函數(shù)將所述計時函數(shù)的返回值t’賦給所述變量t0,所述計時函數(shù)的返回值t’的數(shù)據(jù)寬度不大于所述變量t0的數(shù)據(jù)寬度;執(zhí)行防止所述變量t0、所述返回值t’或所述變量t0與返回值t’之和溢出和/或回繞導(dǎo)致邏輯錯誤的操作。計算機(jī)程序52可以被分割成一個或多個模塊/單元,一個或者多個模塊/單元被存儲在存儲器51中,并由處理器50執(zhí)行,以完成本發(fā)明。一個或多個模塊/單元可以是能夠完成特定功能的一系列計算機(jī)程序指令段,該指令段用于描述計算機(jī)程序52在計算設(shè)備5中的執(zhí)行過程。例如,計算機(jī)程序52可以被分割成變量定義模塊201、賦值模塊202和執(zhí)行模塊203(虛擬裝置中的模塊),各模塊具體功能如下:變量定義模塊201,用于定義一變量t0;賦值模塊202,用于在所述超時判斷這一邏輯的代碼執(zhí)行前,通過調(diào)用計時函數(shù)將所述計時函數(shù)的返回值t’賦給所述變量t0,所述計時函數(shù)的返回值t’的數(shù)據(jù)寬度不大于所述變量t0的數(shù)據(jù)寬度;執(zhí)行模塊203,用于執(zhí)行防止所述變量t0、所述返回值t’或所述變量t0與返回值t’之和溢出和/或回繞導(dǎo)致邏輯錯誤的操作。
計算設(shè)備5可以是桌上型計算機(jī)、筆記本、掌上電腦及云端服務(wù)器等計算設(shè)備。計算設(shè)備5可包括但不僅限于處理器50、存儲器51。本領(lǐng)域技術(shù)人員可以理解,圖5僅僅是計算設(shè)備5的示例,并不構(gòu)成對計算設(shè)備5的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件,例如終端設(shè)備還可以包括輸入輸出設(shè)備、網(wǎng)絡(luò)接入設(shè)備、總線等。
所稱處理器50可以是中央處理單元(centralprocessingunit,cpu),還可以是其他通用處理器、數(shù)字信號處理器(digitalsignalprocessor,dsp)、專用集成電路(applicationspecificintegratedcircuit,asic)、現(xiàn)成可編程門陣列(field-programmablegatearray,fpga)或者其他可編程邏輯器件、分立門或者晶體管邏輯器件、分立硬件組件等。通用處理器可以是微處理器或者該處理器也可以是任何常規(guī)的處理器等。
存儲器51可以是計算設(shè)備5的內(nèi)部存儲單元,例如計算設(shè)備5的硬盤或內(nèi)存。存儲器51也可以是計算設(shè)備5的外部存儲設(shè)備,例如計算設(shè)備5上配備的插接式硬盤,智能存儲卡(smartmediacard,smc),安全數(shù)字(securedigital,sd)卡,閃存卡(flashcard)等。進(jìn)一步地,存儲器51還可以既包括計算設(shè)備5的內(nèi)部存儲單元也包括外部存儲設(shè)備。存儲器51用于存儲計算機(jī)程序以及終端設(shè)備所需的其他程序和數(shù)據(jù)。存儲器51還可以用于暫時地存儲已經(jīng)輸出或者將要輸出的數(shù)據(jù)。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為了描述的方便和簡潔,僅以上述各功能單元、模塊的劃分進(jìn)行舉例說明,實際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能單元、模塊完成,即將裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能單元或模塊,以完成以上描述的全部或者部分功能。實施例中的各功能單元、模塊可以集成在一個處理單元中,也可以是各個單元單獨(dú)物理存在,也可以兩個或兩個以上單元集成在一個單元中,上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。另外,各功能單元、模塊的具體名稱也只是為了便于相互區(qū)分,并不用于限制本申請的保護(hù)范圍。上述系統(tǒng)中單元、模塊的具體工作過程,可以參考前述方法實施例中的對應(yīng)過程,在此不再贅述。
在上述實施例中,對各個實施例的描述都各有側(cè)重,某個實施例中沒有詳述或記載的部分,可以參見其它實施例的相關(guān)描述。
本領(lǐng)域普通技術(shù)人員可以意識到,結(jié)合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、或者計算機(jī)軟件和電子硬件的結(jié)合來實現(xiàn)。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。
在本發(fā)明所提供的實施例中,應(yīng)該理解到,所揭露的裝置/終端設(shè)備和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置/終端設(shè)備實施例僅僅是示意性的,例如,模塊或單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通訊連接可以是通過一些接口,裝置或單元的間接耦合或通訊連接,可以是電性,機(jī)械或其它的形式。
作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。
另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨(dú)物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。
集成的模塊/單元如果以軟件功能單元的形式實現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時,可以存儲在一個計算機(jī)可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明實現(xiàn)上述實施例方法中的全部或部分流程,也可以通過計算機(jī)程序來指令相關(guān)的硬件來完成,處理計時器計時異常的方法的計算機(jī)程序可存儲于一計算機(jī)可讀存儲介質(zhì)中,該計算機(jī)程序在被處理器執(zhí)行時,可實現(xiàn)上述各個方法實施例的步驟,即,定義一變量t0;在所述超時判斷這一邏輯的代碼執(zhí)行前,通過調(diào)用計時函數(shù)將所述計時函數(shù)的返回值t’賦給所述變量t0,所述計時函數(shù)的返回值t’的數(shù)據(jù)寬度不大于所述變量t0的數(shù)據(jù)寬度;執(zhí)行防止所述變量t0、所述返回值t’或所述變量t0與返回值t’之和溢出和/或回繞導(dǎo)致邏輯錯誤的操作。其中,計算機(jī)程序包括計算機(jī)程序代碼,計算機(jī)程序代碼可以為源代碼形式、對象代碼形式、可執(zhí)行文件或某些中間形式等。計算機(jī)可讀介質(zhì)可以包括:能夠攜帶計算機(jī)程序代碼的任何實體或裝置、記錄介質(zhì)、u盤、移動硬盤、磁碟、光盤、計算機(jī)存儲器、只讀存儲器(rom,read-onlymemory)、隨機(jī)存取存儲器(ram,randomaccessmemory)、電載波信號、電信信號以及軟件分發(fā)介質(zhì)等。需要說明的是,計算機(jī)可讀介質(zhì)包含的內(nèi)容可以根據(jù)司法管轄區(qū)內(nèi)立法和專利實踐的要求進(jìn)行適當(dāng)?shù)脑鰷p,例如在某些司法管轄區(qū),根據(jù)立法和專利實踐,計算機(jī)可讀介質(zhì)不包括電載波信號和電信信號。以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的精神和范圍,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。