本申請涉及計時器技術(shù)領(lǐng)域,更具體地說,涉及一種計時方法及裝置。
背景技術(shù):
業(yè)務(wù)運行過程中,有時需要對業(yè)務(wù)運行時長進(jìn)行統(tǒng)計?,F(xiàn)有的計時方法一般包括兩種,一種是調(diào)用操作系統(tǒng)時間來對業(yè)務(wù)運行時長進(jìn)行統(tǒng)計。但是,操作系統(tǒng)時間的精度有限,對于時間精度要求較高的業(yè)務(wù)無法滿足。
為此,系統(tǒng)提供了另一種計時方法,即通過系統(tǒng)自帶的計時器進(jìn)行計時統(tǒng)計。系統(tǒng)計時器的計時精度遠(yuǎn)遠(yuǎn)高于操作系統(tǒng)時間。以目標(biāo)業(yè)務(wù)運行時間計時過程為例,在目標(biāo)業(yè)務(wù)啟動時刻獲取系統(tǒng)計時器的計時時刻,在目標(biāo)業(yè)務(wù)運行結(jié)束時刻再次獲取系統(tǒng)計時器的計時時刻,并利用在后獲取的計時時刻減去在先獲取的計時時刻,結(jié)果作為目標(biāo)業(yè)務(wù)的運行時間。
但是,系統(tǒng)計時器一般存在計時周期,系統(tǒng)計時器從0開始計時到達(dá)計時周期值后會重置為0,并從0開始再次計時。計時周期的大小受計時數(shù)值的存儲限制,以Windows系統(tǒng)計時器為例進(jìn)行說明,其計時數(shù)值是32位的雙字類型DWORD存儲,可以存儲的最大數(shù)值為(2^32-1)ms,約為49.71天。也即,Windows系統(tǒng)計時器的計時周期值為49.71天,計時時刻到達(dá)該計時周期值后就會重置為0并再次從0開始計時。
仍以目標(biāo)業(yè)務(wù)運行時間計時過程為例,如果前后兩次獲取系統(tǒng)計時器的計時時刻之間,系統(tǒng)計時器發(fā)生了重置操作,則會出現(xiàn)計時結(jié)果異常的情況。如在先獲取的計時時刻為49天,在后獲取的計時時刻為1天,相減之后的計時結(jié)果為負(fù)數(shù)。為例避免這種情況的發(fā)生,現(xiàn)有技術(shù)一般是在系統(tǒng)計時器的計時時刻快要達(dá)到計時周期值之前,重啟系統(tǒng)。但是,這種處理方式會影響業(yè)務(wù)的正常運行。
技術(shù)實現(xiàn)要素:
有鑒于此,本申請?zhí)峁┝艘环N計時方法及裝置,以解決現(xiàn)有技術(shù)為防止系統(tǒng)計時器在計時過程中重置所帶來的計時結(jié)果異常,采用重啟系統(tǒng)的解決方案所導(dǎo)致的減少業(yè)務(wù)正常運行時間的問題。
為了實現(xiàn)上述目的,現(xiàn)提出的方案如下:
一種計時方法,包括:
在確定達(dá)到設(shè)定計時開始條件時,獲取系統(tǒng)計時器的計時時刻,作為第一計時時刻;
在確定達(dá)到設(shè)定計時結(jié)束條件時,獲取所述系統(tǒng)計時器的計時時刻,作為第二計時時刻;
確定自達(dá)到設(shè)定計時開始條件時刻至達(dá)到設(shè)定計時結(jié)束條件時刻的過程中,所述系統(tǒng)計時器的重置次數(shù);
計算所述第二計時時刻減去所述第一計時時刻的差值,以及所述重置次數(shù)與所述系統(tǒng)計時器的計時周期值的乘積,并將所述差值與所述乘積的和值確定為計時結(jié)果。
一種計時裝置,包括:
第一計時時刻獲取單元,用于在確定達(dá)到設(shè)定計時開始條件時,獲取系統(tǒng)計時器的計時時刻,作為第一計時時刻;
第二計時時刻獲取單元,用于在確定達(dá)到設(shè)定計時結(jié)束條件時,獲取所述系統(tǒng)計時器的計時時刻,作為第二計時時刻;
重置次數(shù)確定單元,用于確定自達(dá)到設(shè)定計時開始條件時刻至達(dá)到設(shè)定計時結(jié)束條件時刻的過程中,所述系統(tǒng)計時器的重置次數(shù);
計時結(jié)果確定單元,用于計算所述第二計時時刻減去所述第一計時時刻的差值,以及所述重置次數(shù)與所述系統(tǒng)計時器的計時周期值的乘積,并將所述差值與所述乘積的和值確定為計時結(jié)果。
本申請實施例提供的計時方法,在確定達(dá)到設(shè)定計時開始條件時,獲取系統(tǒng)計時器的計時時刻,作為第一計時時刻;在確定達(dá)到設(shè)定計時結(jié)束條件時,獲取所述系統(tǒng)計時器的計時時刻,作為第二計時時刻;確定自達(dá)到設(shè)定計時開始條件時刻至達(dá)到設(shè)定計時結(jié)束條件時刻的過程中,所述系統(tǒng)計時器的重置次數(shù);計算所述第二計時結(jié)果減去所述第一計時結(jié)果的差值,以及所述重置次數(shù)與所述系統(tǒng)計時器的計時周期值的乘積,并將所述差值與所述乘積的和值確定為計時結(jié)果。由此可知,本申請中確定了自達(dá)到設(shè)定計時開始條件時刻至達(dá)到設(shè)定計時結(jié)束條件時刻的過程中,系統(tǒng)計時器的重置次數(shù),并進(jìn)而在計算第二計時結(jié)果減去第一計時結(jié)果的差值的基礎(chǔ)上,進(jìn)一步計算所述重置次數(shù)與系統(tǒng)計時器的計時周期值的乘積,將所述差值與所述乘積的相加結(jié)果確定為計時結(jié)果,即時系統(tǒng)計時器在計時過程中重置多次,本申請仍能夠確定出正確的計時結(jié)果,且無需重啟系統(tǒng),保證了業(yè)務(wù)的正常運行。
附圖說明
為了更清楚地說明本申請實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1為本申請實施例公開的一種計時方法流程圖;
圖2為本申請實施例公開的另一種計時方法流程圖;
圖3為本申請實施例公開的一種目標(biāo)游戲技能冷卻時間統(tǒng)計方法流程圖;
圖4為本申請實施例公開的又一種計時方法流程圖;
圖5為本申請實施例公開的一種計時裝置結(jié)構(gòu)示意圖;
圖6為本申請實施例提供的一種服務(wù)端硬件結(jié)構(gòu)示意圖。
具體實施方式
下面將結(jié)合本申請實施例中的附圖,對本申請實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例?;诒旧暾堉械膶嵤├?,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護(hù)的范圍。
本申請實施例公開了一種計時方法,可以應(yīng)用于服務(wù)端或終端,用于對服務(wù)端或終端中的業(yè)務(wù)進(jìn)行計時統(tǒng)計。其中,業(yè)務(wù)可以包括多種類型,以游戲業(yè)務(wù)為例,可以對游戲技能cd時間進(jìn)行計時統(tǒng)計、對刷怪時間進(jìn)行計時統(tǒng)計、對游戲活動時間進(jìn)行計時統(tǒng)計等。
可以理解的是,本申請方案可以適用于計時時長較短以及計時時長較長的各種場景。接下來的實施例中,對本申請實施例的計時方法進(jìn)行介紹,參見圖1所示,該方法包括:
步驟S100、在確定達(dá)到設(shè)定計時開始條件時,獲取系統(tǒng)計時器的計時時刻,作為第一計時時刻;
具體地,本申請可以對各種不同業(yè)務(wù)、操作的耗時時長進(jìn)行統(tǒng)計。只需要預(yù)先設(shè)定好計時開始條件以及計時結(jié)束條件即可。其中,設(shè)定計時開始條件為開始計時時刻,設(shè)定計時結(jié)束條件為結(jié)束計時時刻。
以對目標(biāo)業(yè)務(wù)的運行計時統(tǒng)計為例,則設(shè)定計時開始條件為目標(biāo)業(yè)務(wù)開始啟動,設(shè)定計時結(jié)束條件為目標(biāo)業(yè)務(wù)運行結(jié)束。
本步驟中,在確定達(dá)到設(shè)定計時開始條件時,獲取系統(tǒng)計時器的計時時刻,作為第一計時時刻。其中,系統(tǒng)計時器可以相當(dāng)于一個鐘表,本步驟中在確定達(dá)到設(shè)定計時開始條件時,獲取系統(tǒng)計時器當(dāng)前時刻的計時時刻,作為第一計時時刻。
以目標(biāo)業(yè)務(wù)的運行計時統(tǒng)計為例,示例如下:
在確定目標(biāo)業(yè)務(wù)開始啟動時,獲取系統(tǒng)計時器的第一計時時刻:第50ms。也即,目標(biāo)業(yè)務(wù)在第50ms時刻開始啟動。
步驟S110、在確定達(dá)到設(shè)定計時結(jié)束條件時,獲取所述系統(tǒng)計時器的計時時刻,作為第二計時時刻;
具體地,一般性的,達(dá)到設(shè)定計時開始條件的時刻與達(dá)到設(shè)定計時結(jié)束條件的時刻是兩個不同的時刻。本步驟中,在確定達(dá)到設(shè)定計時結(jié)束條件時,再次獲取系統(tǒng)計時器的計時時刻,作為第二計時時刻。
可以理解的是,按照時間發(fā)展的先后順序,達(dá)到設(shè)定計時結(jié)束條件時刻應(yīng)晚于達(dá)到設(shè)定計時開始條件時刻。但是,由于系統(tǒng)計時器在到達(dá)計時周期值后會產(chǎn)生重置,因此第二計時時刻與第一計時時刻間的大小關(guān)系并不固定。
仍以目標(biāo)業(yè)務(wù)的運行計時統(tǒng)計為例,示例如下:
在確定目標(biāo)業(yè)務(wù)運行結(jié)束時,獲取系統(tǒng)計時器的第二計時時刻:第80ms。也即,目標(biāo)業(yè)務(wù)在第80ms時刻運行結(jié)束。
可以理解的是,目標(biāo)業(yè)務(wù)可能是從第50ms開始運行,并運行30ms后運行結(jié)束。除此之外,目標(biāo)業(yè)務(wù)還可能是從第50ms開始運行,并在運行1個或多個系統(tǒng)計時器計時周期加30ms后運行結(jié)束。
步驟S120、確定自達(dá)到設(shè)定計時開始條件時刻至達(dá)到設(shè)定計時結(jié)束條件時刻的過程中,所述系統(tǒng)計時器的重置次數(shù);
具體地,具體地,本步驟中確定從達(dá)到設(shè)定計時開始條件時刻,至達(dá)到設(shè)定計時結(jié)束條件時刻的過程中,系統(tǒng)計時器的重置次數(shù)。其中,系統(tǒng)計時器的重置次數(shù)即為系統(tǒng)計時器重置為0的次數(shù)。
步驟S130、計算所述第二計時時刻減去所述第一計時時刻的差值,以及所述重置次數(shù)與所述系統(tǒng)計時器的計時周期值的乘積,并將所述差值與所述乘積的和值確定為計時結(jié)果。
根據(jù)上述介紹可知,如果達(dá)到設(shè)定計時開始條件的時刻,與達(dá)到設(shè)定計時結(jié)束條件的時刻均處于同一個系統(tǒng)計時器計時周期內(nèi),則可以確定系統(tǒng)計時器在該過程中重置次數(shù)為0,則第二計時刻減去第一計時時刻的差值即為最后的計時結(jié)果。但是,如果達(dá)到設(shè)定計時開始條件的時刻,與達(dá)到設(shè)定計時結(jié)束條件的時刻未處于同一個系統(tǒng)計時器計時周期內(nèi),則需要在計算所述第二計時時刻減去所述第一計時時刻的差值的基礎(chǔ)上,進(jìn)一步計算所述重置次數(shù)與所述系統(tǒng)計時器的計時周期值的乘積,并將所述差值與所述乘積的和值確定為計時結(jié)果。
定義第一計時時刻為lastTick,第二計時時刻為curTick,重置次數(shù)為n,系統(tǒng)計時器的計時周期值為T,則計時結(jié)果delayTick可以通過下式確定:
delayTick=curTick-lastTick+n*T
可以確定,當(dāng)n為0時,即系統(tǒng)計時器重置次數(shù)為0,達(dá)到設(shè)定計時開始條件的時刻,與達(dá)到設(shè)定計時結(jié)束條件的時刻均處于同一個系統(tǒng)計時器計時周期內(nèi),此時,delayTick=curTick-lastTick。
本申請實施例提供的計時方法,在確定達(dá)到設(shè)定計時開始條件時,獲取系統(tǒng)計時器的計時時刻,作為第一計時時刻;在確定達(dá)到設(shè)定計時結(jié)束條件時,獲取所述系統(tǒng)計時器的計時時刻,作為第二計時時刻;確定自達(dá)到設(shè)定計時開始條件時刻至達(dá)到設(shè)定計時結(jié)束條件時刻的過程中,所述系統(tǒng)計時器的重置次數(shù);計算所述第二計時結(jié)果減去所述第一計時結(jié)果的差值,以及所述重置次數(shù)與所述系統(tǒng)計時器的計時周期值的乘積,并將所述差值與所述乘積的和值確定為計時結(jié)果。由此可知,本申請中確定了自達(dá)到設(shè)定計時開始條件時刻至達(dá)到設(shè)定計時結(jié)束條件時刻的過程中,系統(tǒng)計時器的重置次數(shù),并進(jìn)而在計算第二計時結(jié)果減去第一計時結(jié)果的差值的基礎(chǔ)上,進(jìn)一步計算所述重置次數(shù)與系統(tǒng)計時器的計時周期值的乘積,將所述差值與所述乘積的相加結(jié)果確定為計時結(jié)果,即時系統(tǒng)計時器在計時過程中重置多次,本申請仍能夠確定出正確的計時結(jié)果,且無需重啟系統(tǒng),保證了業(yè)務(wù)的正常運行。
在本申請的另一個實施例中,以對目標(biāo)業(yè)務(wù)的運行計時統(tǒng)計為例進(jìn)行說明。則設(shè)定計時開始條件為目標(biāo)業(yè)務(wù)開始啟動,設(shè)定計時結(jié)束條件為目標(biāo)業(yè)務(wù)運行結(jié)束。本實施例中,假設(shè)目標(biāo)業(yè)務(wù)的最大運行時長不超過系統(tǒng)計時器的計時周期值,針對此類目標(biāo)業(yè)務(wù),提供了一種計時方法,參見圖2,圖2為本申請實施例公開的另一種計時方法流程圖,如圖2所示,該方法包括:
步驟S200、在確定目標(biāo)業(yè)務(wù)開始啟動時,獲取系統(tǒng)計時器的計時時刻,作為第一計時時刻;
具體地,本實施例中設(shè)定計時開始條件為目標(biāo)業(yè)務(wù)開始啟動,其中目標(biāo)業(yè)務(wù)為確定的需要進(jìn)行運行計時統(tǒng)計的業(yè)務(wù)。
步驟S210、在確定目標(biāo)業(yè)務(wù)運行結(jié)束時,獲取所述系統(tǒng)計時器的計時時刻,作為第二計時時刻;
具體地,本實施例中設(shè)定計時結(jié)束條件為目標(biāo)業(yè)務(wù)運行結(jié)束。
步驟S220、判斷所述第二計時時刻是否不超過所述第一計時時刻;若是,執(zhí)行步驟S230,若否,執(zhí)行步驟S240;
具體地,前述已經(jīng)介紹,本實施例中目標(biāo)業(yè)務(wù)的最大運行時長不超過系統(tǒng)計數(shù)器的計時周期值,因此,只會存在兩種情況,一種是目標(biāo)業(yè)務(wù)啟動時刻和目標(biāo)業(yè)務(wù)運行結(jié)束時刻處于同一計時周期內(nèi),系統(tǒng)計時器重置次數(shù)為0;另一種情況是目標(biāo)業(yè)務(wù)啟動時刻和目標(biāo)業(yè)務(wù)運行結(jié)束時刻處于兩個不同計時周期,且該兩個計時周期為相鄰的兩個計時周期,系統(tǒng)計時器重置次數(shù)為1。
針對第一種情況,獲取的第二計時時刻大于第一計時時刻。針對第二種情況,獲取的第二計時時刻不超過第一計時時刻。
本步驟中,通過判斷第二計時時刻是否不超過第一計時時刻,可以確定目標(biāo)業(yè)務(wù)啟動時刻和目標(biāo)業(yè)務(wù)運行結(jié)束時刻是否處于同一計時周期內(nèi),即系統(tǒng)計時器重置次數(shù)為0或者為1。
步驟S230、確定所述系統(tǒng)計時器重置次數(shù)為1;
具體地,當(dāng)判斷第二計時時刻不超過所述第一計時時刻時,則可以確定目標(biāo)業(yè)務(wù)啟動時刻和目標(biāo)業(yè)務(wù)運行結(jié)束時刻分別處于相鄰兩個不同計時周期內(nèi),即系統(tǒng)計時器重置次數(shù)為1。
步驟S240、確定所述系統(tǒng)計時器重置次數(shù)為0;
具體地,當(dāng)判斷第二計時時刻超過所述第一計時時刻時,則可以確定目標(biāo)業(yè)務(wù)啟動時刻和目標(biāo)業(yè)務(wù)運行結(jié)束時刻處于同一計時周期內(nèi),即系統(tǒng)計時器重置次數(shù)為0。
步驟S250、計算所述第二計時時刻減去所述第一計時時刻的差值,以及所述重置次數(shù)與所述系統(tǒng)計時器的計時周期值的乘積,并將所述差值與所述乘積的和值確定為計時結(jié)果。
具體地,當(dāng)確定的系統(tǒng)計時器重置次數(shù)為1時,則計時結(jié)果的表達(dá)式如下:
delayTick=curTick-lastTick+T
當(dāng)確定的系統(tǒng)計時器重置次數(shù)為0時,則計時結(jié)果的表達(dá)式如下:
delayTick=curTick-lastTick
本實施例中,針對最大運行時長小于系統(tǒng)計時器的計時周期的目標(biāo)業(yè)務(wù),可以通過上述方案來準(zhǔn)確、快速的確定目標(biāo)業(yè)務(wù)的運行時長。
以目標(biāo)業(yè)務(wù)為游戲技能冷卻時間cd為例,由于游戲技能冷卻時間一般在幾秒或者幾分鐘以內(nèi),遠(yuǎn)遠(yuǎn)小于系統(tǒng)計時器的計時周期(系統(tǒng)計時器的計時周期一般為一個月左右,以Windows系統(tǒng)計時器為例,其計時周期為49.7天)。參見圖3,圖3示例了一種目標(biāo)游戲技能冷卻時間統(tǒng)計方法流程圖,如圖3所示,該過程可以包括:
步驟S300、在確定目標(biāo)游戲技能開始釋放時,獲取系統(tǒng)計時器的計時時刻,作為第一計時時刻;
具體地,本步驟中可以對目標(biāo)游戲技能的釋放狀態(tài)進(jìn)行監(jiān)控,則檢測到目標(biāo)游戲技能開始釋放時,獲取系統(tǒng)計時器的計時時刻,作為第一計時時刻。
步驟S310、在確定目標(biāo)游戲技能冷卻結(jié)束時,獲取所述系統(tǒng)計時器的計時時刻,作為第二計時時刻;
具體地,目標(biāo)游戲技能釋放后進(jìn)入冷卻狀態(tài)。在上一步驟中檢測到目標(biāo)游戲技能釋放后,持續(xù)對該目標(biāo)游戲技能的冷卻狀態(tài)進(jìn)行監(jiān)控,則檢測到目標(biāo)游戲技能冷卻結(jié)束時,再次獲取系統(tǒng)計時器的計時時刻,作為第二計時時刻。
步驟S320、判斷所述第二計時時刻是否不超過所述第一計時時刻;若是,執(zhí)行步驟S330,若否,執(zhí)行步驟S340;
步驟S330、確定所述系統(tǒng)計時器重置次數(shù)為1;
步驟S340、確定所述系統(tǒng)計時器重置次數(shù)為0;
步驟S350、計算所述第二計時時刻減去所述第一計時時刻的差值,以及所述重置次數(shù)與所述系統(tǒng)計時器的計時周期值的乘積,并將所述差值與所述乘積的和值確定為所述目標(biāo)游戲技能的冷卻時間。
通過上述方式,針對冷卻時間較短的游戲技能,可以快速確定其實際冷卻時間。
當(dāng)然,上述實施例僅僅以游戲技能冷卻時間為例進(jìn)行說明,其它運行時間不超過系統(tǒng)計時器的計時周期的業(yè)務(wù),也可以使用上述方式來確定。
在本申請的另一個實施例中,介紹了確定系統(tǒng)計時器重置次數(shù)的另一種實現(xiàn)方式,參見圖4,圖4為本申請實施例公開的又一種計時方法流程圖,如圖4所示,該方法包括:
步驟S400、在確定達(dá)到設(shè)定計時開始條件時,獲取系統(tǒng)計時器的計時時刻,作為第一計時時刻;
步驟S410、在確定達(dá)到設(shè)定計時結(jié)束條件時,獲取所述系統(tǒng)計時器的計時時刻,作為第二計時時刻;
其中,步驟S400-S410的過程與前述實施例中步驟S100-S110的過程相同,具體可以參照前述介紹,此處不再贅述。
步驟S420、獲取監(jiān)控線程對所述系統(tǒng)計時器重置次數(shù)的監(jiān)控結(jié)果;
其中,所述監(jiān)控結(jié)果包括所述監(jiān)控線程在自達(dá)到設(shè)定計時開始條件時刻至達(dá)到設(shè)定計時結(jié)束條件時刻的過程中,所監(jiān)控到的系統(tǒng)計時器重置為0的次數(shù)。
本申請可以設(shè)置一監(jiān)控線程,用于在自達(dá)到設(shè)定計時開始條件時刻至達(dá)到設(shè)定計時結(jié)束條件時刻的過程中,對系統(tǒng)計時器的重置次數(shù)進(jìn)行監(jiān)控。在該過程中,每當(dāng)確定系統(tǒng)計時器發(fā)生重置時,將重置次數(shù)加1(重置次數(shù)初始值為0),得到該過程中系統(tǒng)計時器的總重置次數(shù)。
步驟S430、根據(jù)所述監(jiān)控結(jié)果確定所述系統(tǒng)計時器的重置次數(shù);
步驟S440、計算所述第二計時時刻減去所述第一計時時刻的差值,以及所述重置次數(shù)與所述系統(tǒng)計時器的計時周期值的乘積,并將所述差值與所述乘積的和值確定為計時結(jié)果。
本實施例提供的方案,不僅僅能夠適用于最大運行時間不超過系統(tǒng)計時器的計時周期的業(yè)務(wù),針對最大運行時間超過系統(tǒng)計時器的計時周期的業(yè)務(wù)也可以適用,通過對系統(tǒng)計時器的重置次數(shù)進(jìn)行監(jiān)控,可以確定在自達(dá)到設(shè)定計時開始條件時刻至達(dá)到設(shè)定計時結(jié)束條件時刻的過程中,系統(tǒng)計時器的重置次數(shù),進(jìn)而利用重置次數(shù)計算得到業(yè)務(wù)的運行計時結(jié)果。
在本申請的又一個實施例中,以系統(tǒng)計時器為Windows系統(tǒng)的計時器為例進(jìn)行說明,對上述實施例中,S100,確定達(dá)到設(shè)定計時開始條件時,獲取系統(tǒng)計時器的計時時刻,作為第一計時時刻的過程,以及S110,在確定達(dá)到設(shè)定計時結(jié)束條件時,獲取所述系統(tǒng)計時器的計時時刻,作為第二計時時刻的過程進(jìn)行介紹。
本實施例中可以通過Windows系統(tǒng)提供的GetTickCount函數(shù)來獲取系統(tǒng)計時器的計時時刻。因此,上述步驟S100的具體實現(xiàn)過程可以包括:
在確定達(dá)到設(shè)定計時開始條件時,調(diào)用GetTickCount函數(shù)獲取第一計時時刻。
上述步驟S110的具體實現(xiàn)過程可以包括:
在確定達(dá)到設(shè)定計時結(jié)束條件時,再次調(diào)用GetTickCount函數(shù)獲取第二計時時刻。
當(dāng)然,本實施例中僅僅以Windows系統(tǒng)的計時器為例,介紹了獲取系統(tǒng)計時器的計時時刻的具體實現(xiàn)方式。針對其它系統(tǒng)計時器而言,可以采用相應(yīng)的方法來獲取計時時刻。
下面對本申請實施例提供的計時裝置進(jìn)行描述,下文描述的計時裝置與上文描述的計時方法可相互對應(yīng)參照。
參見圖5,圖5為本申請實施例公開的一種計時裝置結(jié)構(gòu)示意圖,如圖5所示,該裝置包括:
第一計時時刻獲取單元11,用于在確定達(dá)到設(shè)定計時開始條件時,獲取系統(tǒng)計時器的計時時刻,作為第一計時時刻;
第二計時時刻獲取單元12,用于在確定達(dá)到設(shè)定計時結(jié)束條件時,獲取所述系統(tǒng)計時器的計時時刻,作為第二計時時刻;
重置次數(shù)確定單元13,用于確定自達(dá)到設(shè)定計時開始條件時刻至達(dá)到設(shè)定計時結(jié)束條件時刻的過程中,所述系統(tǒng)計時器的重置次數(shù);
計時結(jié)果確定單元14,用于計算所述第二計時時刻減去所述第一計時時刻的差值,以及所述重置次數(shù)與所述系統(tǒng)計時器的計時周期值的乘積,并將所述差值與所述乘積的和值確定為計時結(jié)果。
本申請?zhí)峁┑挠嫊r裝置,確定了自達(dá)到設(shè)定計時開始條件時刻至達(dá)到設(shè)定計時結(jié)束條件時刻的過程中,系統(tǒng)計時器的重置次數(shù),并進(jìn)而在計算第二計時結(jié)果減去第一計時結(jié)果的差值的基礎(chǔ)上,進(jìn)一步計算所述重置次數(shù)與系統(tǒng)計時器的計時周期值的乘積,將所述差值與所述乘積的相加結(jié)果確定為計時結(jié)果,即時系統(tǒng)計時器在計時過程中重置多次,本申請仍能夠確定出正確的計時結(jié)果,且無需重啟系統(tǒng),保證了業(yè)務(wù)的正常運行。
可選的,所述設(shè)定計時開始條件可以包括目標(biāo)業(yè)務(wù)開始啟動,所述設(shè)定計時結(jié)束條件可以包括所述目標(biāo)業(yè)務(wù)運行結(jié)束,其中所述目標(biāo)業(yè)務(wù)為確定的需要進(jìn)行運行計時統(tǒng)計的業(yè)務(wù)。
進(jìn)一步,若所述目標(biāo)業(yè)務(wù)的最大運行時長不超過所述系統(tǒng)計時器的計時周期值,則本申請介紹了重置次數(shù)確定單元的一種可選結(jié)構(gòu),所述重置次數(shù)確定單元可以包括:
第一重置次數(shù)確定子單元,用于判斷所述第二計時時刻是否不超過所述第一計時時刻,若是,則確定所述系統(tǒng)計時器重置次數(shù)為1,否則,確定所述系統(tǒng)計時器重置次數(shù)為0。
可選的,本申請實施例介紹了重置次數(shù)確定單元的另一種可選結(jié)構(gòu),其可以包括:
第二重置次數(shù)確定子單元,用于獲取監(jiān)控線程對所述系統(tǒng)計時器重置次數(shù)的監(jiān)控結(jié)果,所述監(jiān)控結(jié)果包括所述監(jiān)控線程在自達(dá)到設(shè)定計時開始條件時刻至達(dá)到設(shè)定計時結(jié)束條件時刻的過程中,所監(jiān)控到的系統(tǒng)計時器重置為0的次數(shù);
第三重置次數(shù)確定子單元,用于根據(jù)所述監(jiān)控結(jié)果確定所述系統(tǒng)計時器的重置次數(shù)。
可選的,所述系統(tǒng)計時器可以為Windows系統(tǒng)的計時器。在此基礎(chǔ)上,所述第一計時時刻獲取單元可以包括:
第一函數(shù)調(diào)用單元,用于在確定達(dá)到設(shè)定計時開始條件時,調(diào)用GetTickCount函數(shù)獲取第一計時時刻;
所述第二計時時刻獲取單元可以包括:
第二函數(shù)調(diào)用單元,用于在確定達(dá)到設(shè)定計時結(jié)束條件時,再次調(diào)用GetTickCount函數(shù)獲取第二計時時刻。
本申請的計時裝置可以應(yīng)用于服務(wù)端,如游戲服務(wù)器等,計時裝置可以對服務(wù)端的業(yè)務(wù)運行時長進(jìn)行統(tǒng)計。當(dāng)然,計時裝置還可以應(yīng)用于用戶終端,以對終端內(nèi)執(zhí)行的業(yè)務(wù)進(jìn)行運行時長統(tǒng)計。以服務(wù)端為例,接下來的實施例中,對實現(xiàn)本申請的計時裝置的服務(wù)端的硬件結(jié)構(gòu)進(jìn)行介紹,參見圖6,圖6為本申請實施例提供的一種服務(wù)端硬件結(jié)構(gòu)示意圖。
如圖6所示,服務(wù)端可以包括:
處理器1,通信接口2,存儲器3,通信總線4,和顯示屏5;
其中處理器1、通信接口2、存儲器3和顯示屏5通過通信總線4完成相互間的通信;
可選的,通信接口2可以為通信模塊的接口,如GSM模塊的接口;
處理器1,用于執(zhí)行程序;
存儲器3,用于存放程序;
程序可以包括程序代碼,所述程序代碼包括處理器的操作指令。
處理器1可能是一個中央處理器CPU,或者是特定集成電路ASIC(Application Specific Integrated Circuit),或者是被配置成實施本申請實施例的一個或多個集成電路。
存儲器3可能包含高速RAM存儲器,也可能還包括非易失性存儲器(non-volatile memory),例如至少一個磁盤存儲器。
其中,程序具體用于:
在確定達(dá)到設(shè)定計時開始條件時,獲取系統(tǒng)計時器的計時時刻,作為第一計時時刻;
在確定達(dá)到設(shè)定計時結(jié)束條件時,獲取所述系統(tǒng)計時器的計時時刻,作為第二計時時刻;
確定自達(dá)到設(shè)定計時開始條件時刻至達(dá)到設(shè)定計時結(jié)束條件時刻的過程中,所述系統(tǒng)計時器的重置次數(shù);
計算所述第二計時時刻減去所述第一計時時刻的差值,以及所述重置次數(shù)與所述系統(tǒng)計時器的計時周期值的乘積,并將所述差值與所述乘積的和值確定為計時結(jié)果。
最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
本說明書中各個實施例采用遞進(jìn)的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。
對所公開的實施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本申請。對這些實施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本申請的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本申請將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。