本發(fā)明涉及網(wǎng)絡(luò)通信技術(shù)領(lǐng)域,尤其涉及一種線程的處理方法及裝置。
背景技術(shù):
隨著互聯(lián)網(wǎng)數(shù)據(jù)通信技術(shù)的高速發(fā)展,用戶利用互聯(lián)網(wǎng)進(jìn)行交付的應(yīng)用越來越多,通常需要將網(wǎng)絡(luò)中生成的日志進(jìn)行存儲(chǔ),以便于管理人員基于存儲(chǔ)的日志對(duì)網(wǎng)絡(luò)環(huán)境進(jìn)行維護(hù)。
現(xiàn)有技術(shù)中,日志服務(wù)器對(duì)日志的待寫入線程及待查詢線程進(jìn)行并行處理,當(dāng)對(duì)待查詢線程進(jìn)行處理時(shí),占用系統(tǒng)資源大,導(dǎo)致日志的待寫入線程無(wú)法及時(shí)得到處理,日志存儲(chǔ)存在延時(shí),系統(tǒng)對(duì)存儲(chǔ)的日志進(jìn)行數(shù)據(jù)分析時(shí),數(shù)據(jù)分析結(jié)果誤差大。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明提供一種線程的處理方法及裝置,優(yōu)先處理待寫入線程,以解決日志存儲(chǔ)存在延時(shí),系統(tǒng)對(duì)存儲(chǔ)的日志進(jìn)行數(shù)據(jù)分析時(shí),數(shù)據(jù)分析結(jié)果誤差大的問題。
為實(shí)現(xiàn)上述目的,本發(fā)明提供技術(shù)方案如下:
根據(jù)本發(fā)明的第一方面,提出了一種線程的處理方法,所述方法包括:
當(dāng)處理待查詢線程時(shí),判斷當(dāng)前是否存在待寫入線程;
當(dāng)存在所述待寫入線程時(shí),停止處理所述待查詢線程,處理所述待寫入線程。
根據(jù)本發(fā)明的第二方面,提出了一種線程的處理裝置,包括:
線程存在判斷模塊,用于當(dāng)處理待查詢線程時(shí),判斷當(dāng)前是否存在待寫入線程;
線程處理模塊,用于當(dāng)存在所述待寫入線程時(shí),停止處理所述待查詢線程,處理所述待寫入線程。
由以上技術(shù)方案可見,當(dāng)日志服務(wù)器處理待查詢線程時(shí),判斷當(dāng)前是否存在待寫入線程,當(dāng)存在待寫入線程時(shí),日志服務(wù)器停止處理待查詢線程,優(yōu)先處理待寫入線程,解決了日志存儲(chǔ)存在延時(shí),系統(tǒng)對(duì)存儲(chǔ)的日志進(jìn)行數(shù)據(jù)分析時(shí),數(shù)據(jù)分析結(jié)果誤差大的問題。
附圖說明
圖1是本發(fā)明提供的一個(gè)線程的處理方法的實(shí)施例流程圖;
圖2是本發(fā)明提供的另一個(gè)線程的處理方法的實(shí)施例流程圖;
圖3是本發(fā)明提供的再一個(gè)線程的處理方法的實(shí)施例流程圖;
圖4是本發(fā)明提供的一種日志服務(wù)器的硬件結(jié)構(gòu)圖;
圖5是本發(fā)明提供的一個(gè)線程的處理的裝置的實(shí)施例框圖;
圖6是本發(fā)明提供的另一個(gè)線程的處理的裝置的實(shí)施例框圖。
具體實(shí)施方式
這里將詳細(xì)地對(duì)示例性實(shí)施例進(jìn)行說明,其示例表示在附圖中。下面的描述涉及附圖時(shí),除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實(shí)施例中所描述的實(shí)施方式并不代表與本發(fā)明相一致的所有實(shí)施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本發(fā)明的一些方面相一致的裝置和方法的例子。
在本發(fā)明使用的術(shù)語(yǔ)是僅僅出于描述特定實(shí)施例的目的,而非旨在限制本發(fā)明。在本發(fā)明和所附權(quán)利要求書中所使用的單數(shù)形式的“一種”、“所述”和“該”也旨在包括多數(shù)形式,除非上下文清楚地表示其他含義。還應(yīng)當(dāng)理解,本文中使用的術(shù)語(yǔ)“和/或”是指并包含一個(gè)或多個(gè)相關(guān)聯(lián)的列出項(xiàng)目的任何或所有可能組合。
應(yīng)當(dāng)理解,盡管在本發(fā)明可能采用術(shù)語(yǔ)第一、第二、第三等來描述各種信息,但這些信息不應(yīng)限于這些術(shù)語(yǔ)。這些術(shù)語(yǔ)僅用來將同一類型的信息彼此區(qū)分開。例如,在不脫離本發(fā)明范圍的情況下,第一信息也可以被稱為第二信息,類似地,第二信息也可以被稱為第一信息。取決于語(yǔ)境,如在此所使用的詞語(yǔ)“如果”可以被解釋成為“在……時(shí)”或“當(dāng)……時(shí)”或“響應(yīng)于確定”。
本發(fā)明實(shí)施例可以應(yīng)用在日志服務(wù)器上,日志服務(wù)器為具有日志存儲(chǔ)及日志查詢功能的服務(wù)器,本領(lǐng)域技術(shù)人員可以理解的是,本發(fā)明實(shí)施例應(yīng)用在日志服務(wù)器上僅為示例性說明,其并不能形成對(duì)本發(fā)明的限制。通常,當(dāng)日志服務(wù)器處理的線程為待查詢線程時(shí),日志服務(wù)器判斷當(dāng)前進(jìn)程中是否存在待寫入線程,當(dāng)進(jìn)程中存在待寫入線程時(shí),日志服務(wù)器停止處理待查詢線程,日志服務(wù)器繼續(xù)處理待寫入線程。通過本發(fā)明實(shí)施例,日志服務(wù)器優(yōu)先處理待寫入線程,解決了日志存儲(chǔ)存在延時(shí),系統(tǒng)對(duì)存儲(chǔ)的日志進(jìn)行數(shù)據(jù)分析時(shí),數(shù)據(jù)分析結(jié)果誤差大的問題。
為對(duì)本發(fā)明進(jìn)行進(jìn)一步說明,提供下列實(shí)施例:
圖1是本發(fā)明提供的一個(gè)線程的處理方法的實(shí)施例流程圖,如圖1所示,包括如下步驟:
步驟101:當(dāng)處理待查詢線程時(shí),判斷當(dāng)前是否存在待寫入線程。
步驟102:當(dāng)存在待寫入線程時(shí),停止處理待查詢線程,處理待寫入線程。
在步驟101中,在一實(shí)施例中,待查詢線程為需要執(zhí)行日志查詢?nèi)蝿?wù)的線程;待寫入線程為執(zhí)行寫入日志任務(wù)的線程。日志服務(wù)器的進(jìn)程中可能同時(shí)包含至少一個(gè)待查詢線程及至少一個(gè)待寫入線程,當(dāng)日志服務(wù)器處理一個(gè)待查詢線程時(shí),日志服務(wù)器判斷當(dāng)前進(jìn)程中是否存在待寫入線程,具體的,日志服務(wù)器如何確定進(jìn)程中是否存在待寫入線程的具體描述可參考下述圖2所示步驟,在此先不作詳述。
在步驟102中,在一實(shí)施例中,當(dāng)進(jìn)程中存在待寫入線程時(shí),日志服務(wù)器停止處理待查詢線程,優(yōu)先處理待寫入線程。在另一實(shí)施例中,當(dāng)進(jìn)程中不存在待寫入線程時(shí),日志服務(wù)器繼續(xù)處理待查詢線程。
本發(fā)明實(shí)施例中,當(dāng)日志服務(wù)器處理待查詢線程時(shí),判斷當(dāng)前是否存在待寫入線程,當(dāng)存在待寫入線程時(shí),日志服務(wù)器停止處理待查詢線程,優(yōu)先處理待寫入線程,解決了日志存儲(chǔ)存在延時(shí),系統(tǒng)對(duì)存儲(chǔ)的日志進(jìn)行數(shù)據(jù)分析時(shí),數(shù)據(jù)分析結(jié)果誤差大的問題。
圖2是本發(fā)明提供的另一個(gè)線程的處理方法的實(shí)施例流程圖,本發(fā)明實(shí)施例結(jié)合圖1、圖2,在步驟101-步驟102的基礎(chǔ)上,對(duì)日志服務(wù)器如何確定進(jìn)程中是否存在待寫入線程的,進(jìn)行示例性說明,如圖2所示,包括如下步驟:
步驟201:判斷計(jì)數(shù)值是否為預(yù)設(shè)的第一數(shù)值,計(jì)數(shù)值用于記錄當(dāng)前處理中的待寫入線程的數(shù)量。當(dāng)計(jì)數(shù)值不為預(yù)設(shè)的第一數(shù)值時(shí),執(zhí)行步驟202;當(dāng)計(jì)數(shù)值為預(yù)設(shè)的第一數(shù)值時(shí),執(zhí)行步驟203。
步驟202:確定當(dāng)前存在待寫入線程。
步驟203:確定當(dāng)前不存在待寫入線程。
在步驟201中,日志服務(wù)器判斷計(jì)數(shù)值是否為預(yù)設(shè)的第一數(shù)值,計(jì)數(shù)值用于記錄當(dāng)前處理中的待寫入線程的數(shù)量,具體的,計(jì)數(shù)值可以為全局變量或者信號(hào)量,第一數(shù)值例如為“0”。當(dāng)計(jì)數(shù)值不為第一數(shù)值“0”時(shí),執(zhí)行步驟202;當(dāng)計(jì)數(shù)值為第一數(shù)值“0”時(shí),執(zhí)行步驟203。
在步驟202中,日志服務(wù)器確定當(dāng)前存在待寫入線程。
在步驟203中,日志服務(wù)器確定當(dāng)前不存在待寫入線程。
本發(fā)明實(shí)施例中,日志服務(wù)器判斷計(jì)數(shù)值是否為預(yù)設(shè)的第一數(shù)值,當(dāng)計(jì)數(shù)值不為預(yù)設(shè)的第一數(shù)值時(shí),日志服務(wù)器確定當(dāng)前存在待寫入線程;當(dāng)計(jì)數(shù)值為預(yù)設(shè)的第一數(shù)值時(shí),日志服務(wù)器確定當(dāng)前不存在待寫入線程,通過計(jì)數(shù)值,可以使當(dāng)前處理中的待寫入線程的數(shù)量的表示方式更直觀,便于管理人員查看,掌握進(jìn)程中待寫入線程的數(shù)量。
圖3是本發(fā)明提供的再一個(gè)線程的處理方法的實(shí)施例流程圖,本發(fā)明實(shí)施例結(jié)合圖1、圖2、圖3,在步驟201-步驟203的基礎(chǔ)上,進(jìn)行示例性說明,如圖3所示,包括如下步驟:
步驟301:當(dāng)執(zhí)行處理待寫入線程的步驟時(shí),以預(yù)設(shè)步長(zhǎng)累加計(jì)數(shù)值,得到第二數(shù)值。
步驟302:當(dāng)待寫入線程處理完成時(shí),基于預(yù)設(shè)步長(zhǎng)將第二數(shù)值變更為第三數(shù)值。
步驟303:判斷第三數(shù)值與第一數(shù)值是否相同。
步驟304:當(dāng)?shù)谌龜?shù)值與第一數(shù)值相同時(shí),通過待寫入線程向待查詢線程發(fā)送進(jìn)程間通信,進(jìn)程間通信用于通知待查詢線程解除停止處理的狀態(tài)。
在步驟301中,當(dāng)執(zhí)行處理待寫入線程的步驟時(shí),日志服務(wù)器以預(yù)設(shè)步長(zhǎng)累加計(jì)數(shù)值,得到第二數(shù)值。具體的,以預(yù)設(shè)步長(zhǎng)為“1”、計(jì)數(shù)值當(dāng)前為“2”進(jìn)行示例性說明:日志服務(wù)器以預(yù)設(shè)步長(zhǎng)“1”累加計(jì)數(shù)值“2”,得到第二數(shù)值“3”,第二數(shù)值“3”表示當(dāng)前進(jìn)程中有3個(gè)正在處理的待寫入線程。
在步驟302中,當(dāng)待寫入線程處理完成時(shí),日志服務(wù)器基于預(yù)設(shè)步長(zhǎng)與第二數(shù)值進(jìn)行減運(yùn)算,得到第三數(shù)值。結(jié)合步驟301,日志服務(wù)器基于預(yù)設(shè)步長(zhǎng)“1”與第二數(shù)值“3”進(jìn)行減運(yùn)算,得到第三數(shù)值“2”,第三數(shù)值“2”表示當(dāng)前進(jìn)程中剩余2個(gè)正在處理的待寫入線程。
在步驟303中,日志服務(wù)器判斷第三數(shù)值與第一數(shù)值是否相同。
在步驟304中,以第三數(shù)值為“0”、第一數(shù)值為“0”進(jìn)行示例性說明:當(dāng)?shù)谌龜?shù)值“0”與第一數(shù)值“0”相同時(shí),表示當(dāng)前進(jìn)程中沒有正在處理的待寫入線程,日志服務(wù)器通過待寫入線程向待查詢線程發(fā)送進(jìn)程間通信,進(jìn)程間通信用于通知待查詢線程解除停止處理的狀態(tài)。本領(lǐng)域技術(shù)人員可以理解的是,此處日志服務(wù)器通過待寫入線程向待查詢線程發(fā)送進(jìn)程間通信的相關(guān)描述可參見現(xiàn)有技術(shù),此處不做詳述。
本發(fā)明實(shí)施例中,當(dāng)日志服務(wù)器處理待寫入線程時(shí),日志服務(wù)器以預(yù)設(shè)步長(zhǎng)累加計(jì)數(shù)值,得到第二數(shù)值;當(dāng)待寫入線程處理完成時(shí),日志服務(wù)器基于預(yù)設(shè)步長(zhǎng)將第二數(shù)值變更為第三數(shù)值,當(dāng)?shù)谌龜?shù)值與第一數(shù)值相同時(shí),日志服務(wù)器解除待查詢線程的停止處理的狀態(tài),使得日志服務(wù)器可以繼續(xù)對(duì)待查詢線程進(jìn)行處理。
對(duì)應(yīng)于上述線程的處理方法,本發(fā)明還提出了圖4所示的日志服務(wù)器的硬件結(jié)構(gòu)圖。請(qǐng)參考圖4,在硬件層面,該日志服務(wù)器包括處理器、內(nèi)部總線、網(wǎng)絡(luò)接口、內(nèi)存以及非易失性存儲(chǔ)器,當(dāng)然還可能包括其他業(yè)務(wù)所需要的硬件。處理器從非易失性存儲(chǔ)器中讀取對(duì)應(yīng)的計(jì)算機(jī)程序到內(nèi)存中然后運(yùn)行,在邏輯層面上形成線程的處理裝置。當(dāng)然,除了軟件實(shí)現(xiàn)方式之外,本發(fā)明并不排除其他實(shí)現(xiàn)方式,比如邏輯器件抑或軟硬件結(jié)合的方式等等,也就是說以下處理流程的執(zhí)行主體并不限定于各個(gè)邏輯單元,也可以是硬件或邏輯器件。
圖5是本發(fā)明提供的一個(gè)線程的處理的裝置的實(shí)施例框圖,如圖5所示,該線程的處理裝置可以包括:線程存在判斷模塊51、線程處理模塊52,其中:
線程存在判斷模塊51,用于當(dāng)處理待查詢線程時(shí),判斷當(dāng)前是否存在待寫入線程;
線程處理模塊52,用于當(dāng)存在待寫入線程時(shí),停止處理待查詢線程,處理待寫入線程。
圖6是本發(fā)明提供的另一個(gè)線程的處理的裝置的實(shí)施例框圖,如圖6所示,在上述圖5所示實(shí)施例的基礎(chǔ)上,線程存在判斷模塊包括:
數(shù)值判斷子模塊511,用于判斷計(jì)數(shù)值是否為預(yù)設(shè)的第一數(shù)值,計(jì)數(shù)值用于記錄當(dāng)前處理中的待寫入線程的數(shù)量;
第一線程確定子模塊512,用于當(dāng)計(jì)數(shù)值不為預(yù)設(shè)的第一數(shù)值時(shí),確定當(dāng)前存在待寫入線程;
第二線程確定子模塊513,用于當(dāng)計(jì)數(shù)值為預(yù)設(shè)的第一數(shù)值時(shí),確定當(dāng)前不存在待寫入線程。
在一實(shí)施例中,線程的處理裝置還包括:
線程累加模塊53,用于當(dāng)執(zhí)行處理待寫入線程的步驟時(shí),以預(yù)設(shè)步長(zhǎng)累加計(jì)數(shù)值,得到第二數(shù)值;
數(shù)值變更模塊54,用于當(dāng)待寫入線程處理完成時(shí),基于預(yù)設(shè)步長(zhǎng)將第二數(shù)值變更為第三數(shù)值。
在一實(shí)施例中,線程的處理裝置還包括:
數(shù)值判斷模塊55,用于判斷第三數(shù)值與第一數(shù)值是否相同;
解除停止?fàn)顟B(tài)模塊56,用于當(dāng)?shù)谌龜?shù)值與第一數(shù)值相同時(shí),通過待寫入線程向待查詢線程發(fā)送進(jìn)程間通信,進(jìn)程間通信用于通知待查詢線程解除停止處理的狀態(tài)。
上述裝置中各個(gè)單元的功能和作用的實(shí)現(xiàn)過程具體詳見上述方法中對(duì)應(yīng)步驟的實(shí)現(xiàn)過程,在此不再贅述。
對(duì)于裝置實(shí)施例而言,由于其基本對(duì)應(yīng)于方法實(shí)施例,所以相關(guān)之處參見方法實(shí)施例的部分說明即可。以上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本發(fā)明方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動(dòng)的情況下,即可以理解并實(shí)施。
由上述實(shí)施例可見,本發(fā)明實(shí)施例中,當(dāng)日志服務(wù)器處理待查詢線程時(shí),判斷當(dāng)前是否存在待寫入線程,當(dāng)存在待寫入線程時(shí),日志服務(wù)器停止處理待查詢線程,優(yōu)先處理待寫入線程,解決了日志存儲(chǔ)存在延時(shí),系統(tǒng)對(duì)存儲(chǔ)的日志進(jìn)行數(shù)據(jù)分析時(shí),數(shù)據(jù)分析結(jié)果誤差大的問題。
本領(lǐng)域技術(shù)人員在考慮說明書及實(shí)踐這里公開的發(fā)明后,將容易想到本發(fā)明的其它實(shí)施方案。本發(fā)明旨在涵蓋本發(fā)明的任何變型、用途或者適應(yīng)性變化,這些變型、用途或者適應(yīng)性變化遵循本發(fā)明的一般性原理并包括本發(fā)明未公開的本技術(shù)領(lǐng)域中的公知常識(shí)或慣用技術(shù)手段。說明書和實(shí)施例僅被視為示例性的,本發(fā)明的真正范圍和精神由下面的權(quán)利要求指出。
還需要說明的是,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、商品或者設(shè)備中還存在另外的相同要素。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)的范圍之內(nèi)。