數(shù)據(jù)緩存處理方法及裝置制造方法
【專利摘要】本發(fā)明公開了一種數(shù)據(jù)緩存處理方法及裝置。數(shù)據(jù)緩存處理方法包括:接收數(shù)據(jù)獲取線程獲取數(shù)據(jù)的請求信號;檢測緩沖區(qū)的數(shù)據(jù)緩存占用量,其中,所述緩沖區(qū)用于緩存所述數(shù)據(jù)獲取線程請求獲取的數(shù)據(jù);判斷所述緩沖區(qū)的數(shù)據(jù)緩存占用量是否達(dá)到預(yù)設(shè)條件;如果判斷所述緩沖區(qū)的數(shù)據(jù)緩存占用量達(dá)到所述預(yù)設(shè)條件,則控制所述數(shù)據(jù)獲取線程處于等待狀態(tài);以及如果判斷所述緩沖區(qū)的數(shù)據(jù)緩存占用量未達(dá)到預(yù)設(shè)條件,則控制所述數(shù)據(jù)獲取線程處于運(yùn)行狀態(tài)。通過本發(fā)明解決了數(shù)據(jù)處理過程中因數(shù)據(jù)處理速度滯后造成數(shù)據(jù)堆積在內(nèi)存中造成內(nèi)存被長時(shí)間占用的問題,進(jìn)而達(dá)到了高效利用內(nèi)存的效果。
【專利說明】數(shù)據(jù)緩存處理方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,具體而言,涉及一種數(shù)據(jù)緩存處理方法及裝置。
【背景技術(shù)】
[0002]同步程序通過webservice服務(wù)、接口等方式獲取源數(shù)據(jù),獲取完成后對數(shù)據(jù)進(jìn)行處理并更新到目標(biāo)數(shù)據(jù)源。一般情況下為了效率的提升會(huì)直接采取多個(gè)線程進(jìn)行數(shù)據(jù)獲取,再利用數(shù)據(jù)處理程序處理獲取完成的數(shù)據(jù)。但是如果數(shù)據(jù)處理程序處理數(shù)據(jù)的速度比獲取數(shù)據(jù)速度慢時(shí),會(huì)造成獲取到的數(shù)據(jù)堆積在內(nèi)存中,造成內(nèi)存的長時(shí)間占用。采用單線程獲取數(shù)據(jù)處理數(shù)據(jù)不存在該問題,但是該方式效率很低。
[0003]針對相關(guān)技術(shù)中數(shù)據(jù)處理過程中因數(shù)據(jù)處理速度滯后造成數(shù)據(jù)堆積在內(nèi)存中的問題,目如尚未提出有效的解決方案。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的主要目的在于提供一種數(shù)據(jù)緩存處理方法及裝置,以解決數(shù)據(jù)處理過程中因數(shù)據(jù)處理速度滯后造成數(shù)據(jù)堆積在內(nèi)存中的問題。
[0005]為了實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的一個(gè)方面,提供了一種數(shù)據(jù)緩存處理方法。
[0006]根據(jù)本發(fā)明的數(shù)據(jù)緩存處理方法包括:接收數(shù)據(jù)獲取線程獲取數(shù)據(jù)的請求信號;檢測緩沖區(qū)的數(shù)據(jù)緩存占用量,其中,所述緩沖區(qū)用于緩存所述數(shù)據(jù)獲取線程請求獲取的數(shù)據(jù);判斷所述緩沖區(qū)的數(shù)據(jù)緩存占用量是否達(dá)到預(yù)設(shè)條件;如果判斷所述緩沖區(qū)的數(shù)據(jù)緩存占用量達(dá)到所述預(yù)設(shè)條件,則控制所述數(shù)據(jù)獲取線程處于等待狀態(tài);以及如果判斷所述緩沖區(qū)的數(shù)據(jù)緩存占用量未達(dá)到所述預(yù)設(shè)條件,則控制所述數(shù)據(jù)獲取線程處于運(yùn)行狀態(tài)。
[0007]進(jìn)一步地,檢測緩沖區(qū)的數(shù)據(jù)緩存占用量包括:檢測所述緩沖區(qū)的緩存占用長度,其中,緩存占用長度用于表示緩沖區(qū)已經(jīng)執(zhí)行緩存的次數(shù),判斷緩沖區(qū)的數(shù)據(jù)緩存占用量是否達(dá)到預(yù)設(shè)條件包括:判斷緩存占用長度是否達(dá)到預(yù)設(shè)數(shù)量,其中,如果緩存占用長度達(dá)到預(yù)設(shè)數(shù)量,則確定緩沖區(qū)的數(shù)據(jù)緩存占用量達(dá)到預(yù)設(shè)條件,如果緩存占用長度未達(dá)到預(yù)設(shè)數(shù)量,則確定緩沖區(qū)的數(shù)據(jù)緩存占用量未達(dá)到預(yù)設(shè)條件。
[0008]進(jìn)一步地,檢測緩沖區(qū)的數(shù)據(jù)緩存占用量包括:檢測所述緩沖區(qū)的內(nèi)存占用量,判斷緩沖區(qū)的數(shù)據(jù)緩存占用量是否達(dá)到預(yù)設(shè)條件包括:判斷所述內(nèi)存占用量是否達(dá)到預(yù)設(shè)內(nèi)存占用量,其中,如果內(nèi)存占用量達(dá)到預(yù)設(shè)內(nèi)存占用量,則確定緩沖區(qū)的數(shù)據(jù)緩存占用量達(dá)到預(yù)設(shè)條件,如果內(nèi)存占用量未達(dá)到預(yù)設(shè)內(nèi)存占用量,則確定緩沖區(qū)的數(shù)據(jù)緩存占用量未達(dá)到預(yù)設(shè)條件。
[0009]進(jìn)一步地,在控制數(shù)據(jù)獲取線程處于等待狀態(tài)之后,數(shù)據(jù)緩存處理方法還包括:檢測緩沖區(qū)是否清空;以及如果檢測到緩沖區(qū)清空,則控制處于等待狀態(tài)的數(shù)據(jù)獲取線程發(fā)送請求信號。
[0010]進(jìn)一步地,在控制數(shù)據(jù)獲取線程處于等待狀態(tài)之后,數(shù)據(jù)緩存處理方法還包括:檢測緩沖區(qū)的空閑存儲(chǔ)量是否大于預(yù)設(shè)存儲(chǔ)閾值;以及如果檢測到緩沖區(qū)的空閑存儲(chǔ)量大于預(yù)設(shè)存儲(chǔ)閾值,則控制處于等待狀態(tài)的數(shù)據(jù)獲取線程發(fā)送請求信號。
[0011]為了實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的另一方面,提供了一種數(shù)據(jù)緩存處理裝置。
[0012]根據(jù)本發(fā)明的數(shù)據(jù)緩存處理裝置包括:接收模塊,用于接收數(shù)據(jù)獲取線程獲取數(shù)據(jù)的請求信號;檢測模塊,用于檢測緩沖區(qū)的數(shù)據(jù)緩存占用量,其中,緩沖區(qū)用于緩存數(shù)據(jù)獲取線程請求獲取的數(shù)據(jù);判斷模塊,用于判斷緩沖區(qū)的數(shù)據(jù)緩存占用量是否達(dá)到預(yù)設(shè)條件;第一控制模塊,用于當(dāng)判斷緩沖區(qū)的數(shù)據(jù)緩存占用量達(dá)到預(yù)設(shè)條件時(shí),控制所述數(shù)據(jù)獲取線程處于等待狀態(tài);以及第二控制模塊,用于當(dāng)判斷緩沖區(qū)的數(shù)據(jù)緩存占用量未達(dá)到預(yù)設(shè)條件時(shí),則控制數(shù)據(jù)獲取線程處于運(yùn)行狀態(tài)。
[0013]進(jìn)一步地,檢測緩沖區(qū)的數(shù)據(jù)緩存占用量包括:檢測緩沖區(qū)的緩存占用長度,其中,緩存占用長度用于表示緩沖區(qū)已經(jīng)執(zhí)行緩存的次數(shù),判斷模塊包括:第一判斷單元,用于判斷緩存占用長度是否達(dá)到預(yù)設(shè)數(shù)量,其中,如果緩存占用長度達(dá)到預(yù)設(shè)數(shù)量,則確定緩沖區(qū)的數(shù)據(jù)緩存占用量達(dá)到預(yù)設(shè)條件,如果緩存占用長度未達(dá)到預(yù)設(shè)數(shù)量,則確定緩沖區(qū)的數(shù)據(jù)緩存占用量未達(dá)到預(yù)設(shè)條件。
[0014]進(jìn)一步地,檢測緩沖區(qū)的數(shù)據(jù)緩存占用量包括:檢測緩沖區(qū)的內(nèi)存占用量,判斷模塊包括:第二判斷單元,用于判斷內(nèi)存占用量是否達(dá)到預(yù)設(shè)內(nèi)存占用量,其中,如果內(nèi)存占用量達(dá)到預(yù)設(shè)內(nèi)存占用量,則確定緩沖區(qū)的數(shù)據(jù)緩存占用量達(dá)到預(yù)設(shè)條件,如果內(nèi)存占用量未達(dá)到預(yù)設(shè)內(nèi)存占用量,則確定緩沖區(qū)的數(shù)據(jù)緩存占用量未達(dá)到預(yù)設(shè)條件。
[0015]進(jìn)一步地,在控制數(shù)據(jù)獲取線程處于等待狀態(tài)之后,數(shù)據(jù)緩存處理裝置還包括:第二檢測模塊,用于檢測緩沖區(qū)是否清空;以及第三控制模塊,用于在檢測到緩沖區(qū)清空時(shí),控制處于等待狀態(tài)的數(shù)據(jù)獲取線程發(fā)送請求信號。
[0016]進(jìn)一步地,在控制數(shù)據(jù)獲取線程處于等待狀態(tài)之后,數(shù)據(jù)緩存處理裝置還包括:第三檢測模塊,用于檢測緩沖區(qū)的空閑存儲(chǔ)量是否大于預(yù)設(shè)存儲(chǔ)閾值;以及第四控制模塊,用于在檢測到緩沖區(qū)的空閑存儲(chǔ)量大于預(yù)設(shè)存儲(chǔ)閾值時(shí),控制處于等待狀態(tài)的數(shù)據(jù)獲取線程發(fā)送請求信號。
[0017]通過本發(fā)明,通過判斷緩沖區(qū)的緩存占用量是否達(dá)到預(yù)設(shè)條件來控制是否允許數(shù)據(jù)獲取線程運(yùn)行并獲取數(shù)據(jù)存放在緩沖區(qū),解決了數(shù)據(jù)處理過程中因數(shù)據(jù)處理速度滯后造成數(shù)據(jù)堆積在內(nèi)存中造成內(nèi)存被長時(shí)間占用的問題,進(jìn)而達(dá)到了高效利用內(nèi)存的效果。
【專利附圖】
【附圖說明】
[0018]構(gòu)成本申請的一部分的附圖用來提供對本發(fā)明的進(jìn)一步理解,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:
[0019]圖1是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)緩存處理方法的流程圖;
[0020]圖2是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)緩存處理的流程圖;
[0021]圖3是根據(jù)本發(fā)明第一實(shí)施例的數(shù)據(jù)緩存處理裝置的示意圖;
[0022]圖4是根據(jù)本發(fā)明第二實(shí)施例的數(shù)據(jù)緩存處理裝置的示意圖;以及
[0023]圖5是根據(jù)本發(fā)明第三實(shí)施例的數(shù)據(jù)緩存處理裝置的示意圖。
【具體實(shí)施方式】
[0024]需要說明的是,在不沖突的情況下,本申請中的實(shí)施例及實(shí)施例中的特征可以相互組合。下面將參考附圖并結(jié)合實(shí)施例來詳細(xì)說明本發(fā)明。
[0025]根據(jù)本發(fā)明實(shí)施例,提供了一種數(shù)據(jù)緩存處理方法,圖1是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)緩存處理方法的流程圖。
[0026]如圖1所示,該方法包括如下的步驟S102至步驟SllO:
[0027]步驟S102:接收數(shù)據(jù)獲取線程獲取數(shù)據(jù)的請求信號;
[0028]數(shù)據(jù)獲取線程在獲取數(shù)據(jù)之前,向線程控制模塊發(fā)出獲取數(shù)據(jù)的請求信號,由于線程控制模塊一次只能處理一個(gè)數(shù)據(jù)獲取線程的請求信號,因而在該線程控制模塊接收該請求信號之后,對該數(shù)據(jù)獲取線程進(jìn)行標(biāo)識(shí),例如在該數(shù)據(jù)獲取線程中添加一個(gè)標(biāo)志位,表明線程控制模塊正在處理該數(shù)據(jù)獲取線程,使得其他申請運(yùn)行的數(shù)據(jù)獲取線程處于等待處理狀態(tài)。
[0029]步驟S104:檢測緩沖區(qū)的數(shù)據(jù)緩存占用量,其中,緩沖區(qū)用于緩存數(shù)據(jù)獲取線程請求獲取的數(shù)據(jù);
[0030]數(shù)據(jù)獲取線程獲取得到的數(shù)據(jù)都存儲(chǔ)在緩沖區(qū)中,該緩沖區(qū)分為兩個(gè)屬性,一是已經(jīng)占用量,其不僅包括已經(jīng)放入緩沖區(qū)的數(shù)據(jù),還包括數(shù)據(jù)獲取線程正在獲取但是還沒有完成的數(shù)據(jù);二是實(shí)際占用量,該實(shí)際占用量僅僅包含應(yīng)經(jīng)放入緩沖區(qū)的數(shù)據(jù)。線程控制模塊在檢測緩沖區(qū)占用量時(shí)檢測的是緩存已經(jīng)占用量,根據(jù)該緩存已經(jīng)占用量決定是否允許該數(shù)據(jù)獲取線程運(yùn)行并獲取數(shù)據(jù)。
[0031]步驟S106:判斷緩沖區(qū)的數(shù)據(jù)緩存占用量是否達(dá)到預(yù)設(shè)條件;
[0032]該預(yù)設(shè)條件用于控制緩沖區(qū)的的數(shù)據(jù)緩存占用量的上限值,該預(yù)設(shè)條件值可以根據(jù)緩沖區(qū)的最大容量、數(shù)據(jù)處理程序的數(shù)據(jù)處理速度等來合理設(shè)置,從而使得在不影響數(shù)據(jù)處理速度的條件下盡量減少內(nèi)存的占用。
[0033]步驟S108:如果判斷上述緩沖區(qū)的數(shù)據(jù)緩存占用量達(dá)到所述預(yù)設(shè)條件,則控制數(shù)據(jù)獲取線程處于等待狀態(tài);
[0034]數(shù)據(jù)獲取線程處于等待狀態(tài)時(shí)自動(dòng)進(jìn)入等待隊(duì)列,不再繼續(xù)進(jìn)行數(shù)據(jù)的獲取申請。
[0035]步驟SllO:如果判斷上述緩沖區(qū)的數(shù)據(jù)緩存占用量未達(dá)到預(yù)設(shè)條件,則控制數(shù)據(jù)獲取線程處于運(yùn)行狀態(tài)。
[0036]本發(fā)明實(shí)施例通過在接收數(shù)據(jù)獲取線程的請求信號之后,首先檢測緩沖區(qū)的數(shù)據(jù)緩存占用量,并通過該數(shù)據(jù)緩存占用量與預(yù)設(shè)條件的比較判斷是否允許數(shù)據(jù)獲取線程運(yùn)行并獲取數(shù)據(jù),如若緩存占用量達(dá)到預(yù)設(shè)條件則不再允許數(shù)據(jù)獲取線程運(yùn)行,從而避免由于數(shù)據(jù)大量堆積在內(nèi)存中造成內(nèi)存的長時(shí)間占用。
[0037]可選地,為了不影響數(shù)據(jù)處理程序的數(shù)據(jù)處理效率,檢測緩沖區(qū)的數(shù)據(jù)緩存占用量包括:檢測緩沖區(qū)的緩存占用長度,其中,該緩存占用長度用于表示緩沖區(qū)已經(jīng)執(zhí)行緩存的次數(shù),判斷緩沖區(qū)的數(shù)據(jù)緩存占用量是否達(dá)到預(yù)設(shè)條件包括:判斷緩存占用長度是否達(dá)到預(yù)設(shè)數(shù)量,其中,如果緩存占用長度達(dá)到預(yù)設(shè)數(shù)量,則確定緩沖區(qū)的數(shù)據(jù)緩存占用量達(dá)到預(yù)設(shè)條件,如果緩存占用長度未達(dá)到預(yù)設(shè)數(shù)量,則確定緩沖區(qū)的數(shù)據(jù)緩存占用量未達(dá)到預(yù)設(shè)條件。
[0038]通過判斷緩沖區(qū)的緩存占用長度是否達(dá)到預(yù)設(shè)數(shù)量來確定是否允許數(shù)據(jù)獲取線程運(yùn)行,這樣可以確保數(shù)據(jù)處理程序具有足夠的數(shù)據(jù)源可以處理,不會(huì)出現(xiàn)數(shù)據(jù)處理程序空閑的情況,從而不會(huì)影響數(shù)據(jù)處理的效率。
[0039]可選地,為了直觀的了解內(nèi)存的占用情況,檢測緩沖區(qū)的數(shù)據(jù)緩存占用量包括:檢測緩沖區(qū)的內(nèi)存占用量,判斷緩沖區(qū)的數(shù)據(jù)緩存占用量是否達(dá)到預(yù)設(shè)條件包括:判斷內(nèi)存占用量是否達(dá)到預(yù)設(shè)內(nèi)存占用量,其中,如果內(nèi)存占用量達(dá)到預(yù)設(shè)內(nèi)存占用量,則確定緩沖區(qū)的數(shù)據(jù)緩存占用量達(dá)到預(yù)設(shè)條件,如果內(nèi)存占用量未達(dá)到預(yù)設(shè)內(nèi)存占用量,則確定緩沖區(qū)的數(shù)據(jù)緩存占用量未達(dá)到預(yù)設(shè)條件。
[0040]檢測緩沖區(qū)的內(nèi)存占用量可以直觀的了解內(nèi)存的占用情況,如果內(nèi)存占用量達(dá)到預(yù)設(shè)內(nèi)存占用量就不允許數(shù)據(jù)獲取線程運(yùn)行并獲取數(shù)據(jù)放置在緩沖區(qū)中,因此通過合理的設(shè)置預(yù)設(shè)內(nèi)存占用量,就可以保證內(nèi)存不被大量的占用。
[0041]可選地,為了在不影響數(shù)據(jù)處理程序的數(shù)據(jù)處理效率的同時(shí)保證內(nèi)存不被大量占用,可以同時(shí)檢測緩沖區(qū)的緩存占用長度和內(nèi)存占用量,均衡這兩個(gè)指標(biāo)進(jìn)行數(shù)據(jù)獲取線程的控制,在緩存占用長度未達(dá)到預(yù)設(shè)數(shù)量的同時(shí)內(nèi)存占用量也未達(dá)到預(yù)設(shè)內(nèi)存占用量的條件下才允許數(shù)據(jù)獲取線程運(yùn)行并獲取數(shù)據(jù)存放在緩沖區(qū)中。
[0042]可選地,在控制數(shù)據(jù)獲取線程處于等待狀態(tài)之后,數(shù)據(jù)緩存處理方法還包括:檢測緩沖區(qū)是否清空;以及如果檢測到緩沖區(qū)清空,則控制處于等待狀態(tài)的數(shù)據(jù)獲取線程發(fā)送請求信號。
[0043]處理程序不斷地從緩沖區(qū)取出數(shù)據(jù)進(jìn)行處理同時(shí)同步到本地?cái)?shù)據(jù)庫,并將該數(shù)據(jù)從緩沖區(qū)中刪除。從緩沖區(qū)刪除數(shù)據(jù)后,檢測緩沖區(qū)是否清空,如果檢測到緩沖區(qū)清空,則通知處于等待隊(duì)列中的數(shù)據(jù)獲取線程重新向線程控制模塊申請運(yùn)行。處于等待狀態(tài)的數(shù)據(jù)獲取線程只有在得到通知信號才再次向線程控制模塊申請運(yùn)行,這樣可以減少線程控制模塊的運(yùn)行頻率。
[0044]可選地,為了不影響數(shù)據(jù)處理程序的數(shù)據(jù)處理效率,在控制數(shù)據(jù)獲取線程處于等待狀態(tài)之后,數(shù)據(jù)緩存處理方法還包括:檢測緩沖區(qū)的空閑存儲(chǔ)量是否大于預(yù)設(shè)存儲(chǔ)閾值;以及如果檢測到緩沖區(qū)的空閑存儲(chǔ)量大于預(yù)設(shè)存儲(chǔ)閾值,則控制處于等待狀態(tài)的數(shù)據(jù)獲取線程發(fā)送所述請求信號。
[0045]通過檢測緩沖區(qū)的空閑存儲(chǔ)量是否大于預(yù)設(shè)存儲(chǔ)閾值來判斷是否通知處于等待隊(duì)列中的數(shù)據(jù)獲取線程重新向線程控制模塊申請運(yùn)行,通過合理設(shè)置預(yù)設(shè)存儲(chǔ)閾值,可以避免由于緩存區(qū)沒有數(shù)據(jù)造成數(shù)據(jù)處理程序的空閑而降低數(shù)據(jù)處理效率。
[0046]具體的,如圖2所示的數(shù)據(jù)處理流程圖,處理步驟如下:
[0047]步驟S202:多個(gè)數(shù)據(jù)獲取線程向線程控制模塊發(fā)送獲取數(shù)據(jù)的請求信號,線程控制模塊對最先接收到的請求信號進(jìn)行處理;
[0048]步驟S204:線程控制模塊根據(jù)緩存區(qū)的占用量判斷是否給與數(shù)據(jù)獲取線程運(yùn)行權(quán)限,如果允許該數(shù)據(jù)獲取線程運(yùn)行,則該數(shù)據(jù)獲取線程獲取數(shù)據(jù)并存放在緩沖區(qū);如果不允許該數(shù)據(jù)獲取線程運(yùn)行,則該數(shù)據(jù)獲取線程處于等待狀態(tài),并進(jìn)入等待隊(duì)列;
[0049]步驟S206:數(shù)據(jù)處理程序從緩沖區(qū)取出數(shù)據(jù),并將該數(shù)據(jù)從緩沖區(qū)刪除,從緩沖區(qū)取出數(shù)據(jù)后判斷該緩沖區(qū)是否為空,如果判斷出緩沖區(qū)為空,則通知處于等待隊(duì)列中的數(shù)據(jù)獲取線程重新向線程控制模塊申請運(yùn)行;如果緩沖區(qū)不為空,則數(shù)據(jù)處理程序繼續(xù)從緩沖區(qū)取出數(shù)據(jù)進(jìn)行處理,直至判斷出緩沖區(qū)為空。
[0050]從以上的描述中,可以看出,本發(fā)明實(shí)現(xiàn)了如下技術(shù)效果:
[0051]根據(jù)本發(fā)明的實(shí)施例,提供了一種數(shù)據(jù)緩存處理方法,該方法通過檢測線程控制模塊檢測緩沖區(qū)的占用量并與預(yù)設(shè)條件比較判斷是否允許數(shù)據(jù)獲取線程運(yùn)行并獲取數(shù)據(jù)放入到緩沖區(qū)中,當(dāng)緩沖區(qū)的占用量達(dá)到預(yù)設(shè)條件時(shí)則禁止上述數(shù)據(jù)獲取線程運(yùn)行,從而避免了因數(shù)據(jù)處理速度滯后造成數(shù)據(jù)堆積在內(nèi)存中造成內(nèi)存被長時(shí)間占用的問題,達(dá)到了高效的利用內(nèi)存的效果。
[0052]需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
[0053]根據(jù)本發(fā)明又一實(shí)施例,提供了一種數(shù)據(jù)緩存處理裝置,圖1為根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)緩存處理裝置示意圖。
[0054]如圖1所示,該裝置包括:接收模塊10、檢測模塊20、判斷模塊30、第一控制模塊40和第二控制模塊50。
[0055]接收模塊10,用于接收數(shù)據(jù)獲取線程獲取數(shù)據(jù)的請求信號;
[0056]數(shù)據(jù)獲取線程在獲取數(shù)據(jù)之前,向線程控制模塊發(fā)出獲取數(shù)據(jù)的請求信號,由于線程控制模塊一次只能處理一個(gè)數(shù)據(jù)獲取線程的請求信號,因而在該線程控制模塊接收該請求信號之后,對該數(shù)據(jù)獲取線程進(jìn)行標(biāo)識(shí),例如在該數(shù)據(jù)獲取線程中添加一個(gè)標(biāo)志位,表明線程控制模塊正在處理該數(shù)據(jù)獲取線程,使得其他申請運(yùn)行的數(shù)據(jù)獲取線程處于等待處理狀態(tài)。
[0057]檢測模塊20,用于檢測緩沖區(qū)的數(shù)據(jù)緩存占用量,其中,緩沖區(qū)用于緩存數(shù)據(jù)獲取線程請求獲取的數(shù)據(jù);
[0058]數(shù)據(jù)獲取線程獲取得到的數(shù)據(jù)都存儲(chǔ)在緩沖區(qū)中,該緩沖區(qū)分為兩個(gè)屬性,一是已經(jīng)占用量,其不僅包括已經(jīng)放入緩沖區(qū)的數(shù)據(jù),還包括數(shù)據(jù)獲取線程正在獲取但是還沒有完成的數(shù)據(jù);二是實(shí)際占用量,該實(shí)際占用量僅僅包含應(yīng)經(jīng)放入緩沖區(qū)的數(shù)據(jù)。線程控制模塊在檢測緩沖區(qū)占用量時(shí)檢測的是緩存已經(jīng)占用量,根據(jù)該緩存已經(jīng)占用量決定是否允許該數(shù)據(jù)獲取線程運(yùn)行并獲取數(shù)據(jù)。
[0059]判斷模塊30,用于判斷緩沖區(qū)的數(shù)據(jù)緩存占用量是否達(dá)到預(yù)設(shè)條件;
[0060]該預(yù)設(shè)條件用于控制緩沖區(qū)的的數(shù)據(jù)緩存占用量的上限值,該預(yù)設(shè)條件值可以根據(jù)緩沖區(qū)的最大容量、數(shù)據(jù)處理程序的數(shù)據(jù)處理速度等來合理設(shè)置,從而使得在不影響數(shù)據(jù)處理速度的條件下盡量減少內(nèi)存的占用。
[0061]第一控制模塊40,用于當(dāng)判斷緩沖區(qū)的數(shù)據(jù)緩存占用量達(dá)到預(yù)設(shè)條件時(shí),控制數(shù)據(jù)獲取線程處于等待狀態(tài);
[0062]數(shù)據(jù)獲取線程處于等待狀態(tài)時(shí)自動(dòng)進(jìn)入等待隊(duì)列,不再繼續(xù)進(jìn)行數(shù)據(jù)的獲取申請。
[0063]第二控制模塊50,用于當(dāng)判斷緩沖區(qū)的數(shù)據(jù)緩存占用量未達(dá)到預(yù)設(shè)條件時(shí),則控制數(shù)據(jù)獲取線程處于運(yùn)行狀態(tài)。
[0064]本發(fā)明實(shí)施例通過接收模塊10接收數(shù)據(jù)獲取線程的請求信號之后,首先利用檢測模塊20檢測緩沖區(qū)的數(shù)據(jù)緩存占用量,并通過該數(shù)據(jù)緩存占用量與預(yù)設(shè)條件的比較判斷是否允許數(shù)據(jù)獲取線程運(yùn)行并獲取數(shù)據(jù),如若緩存占用量達(dá)到預(yù)設(shè)條件則不再允許數(shù)據(jù)獲取線程運(yùn)行,從而避免由于數(shù)據(jù)大量堆積在內(nèi)存中造成內(nèi)存的長時(shí)間占用,提高內(nèi)存的使用效率。
[0065]可選地,為了不影響數(shù)據(jù)處理程序的數(shù)據(jù)處理效率,檢測緩沖區(qū)的數(shù)據(jù)緩存占用量包括:檢測緩沖區(qū)的緩存占用長度,其中,緩存占用長度用于表示緩沖區(qū)已經(jīng)執(zhí)行緩存的次數(shù),判斷模塊30包括:第一判斷單元,用于判斷緩存占用長度是否達(dá)到預(yù)設(shè)數(shù)量,其中,如果緩存占用長度達(dá)到預(yù)設(shè)數(shù)量,則確定緩沖區(qū)的數(shù)據(jù)緩存占用量達(dá)到預(yù)設(shè)條件,如果緩存占用長度未達(dá)到預(yù)設(shè)數(shù)量,則確定緩沖區(qū)的數(shù)據(jù)緩存占用量未達(dá)到預(yù)設(shè)條件。
[0066]通過判斷緩沖區(qū)的緩存占用長度是否達(dá)到預(yù)設(shè)數(shù)量來確定是否允許數(shù)據(jù)獲取線程運(yùn)行,這樣可以確保數(shù)據(jù)處理程序具有足夠的數(shù)據(jù)源可以處理,不會(huì)出現(xiàn)數(shù)據(jù)處理程序空閑的情況,從而不會(huì)影響數(shù)據(jù)處理的效率。
[0067]可選地,為了直觀的了解內(nèi)存的占用情況,檢測緩沖區(qū)的數(shù)據(jù)緩存占用量包括:檢測緩沖區(qū)的內(nèi)存占用量,判斷模塊30包括:第二判斷單元,用于判斷內(nèi)存占用量是否達(dá)到預(yù)設(shè)內(nèi)存占用量,其中,如果內(nèi)存占用量達(dá)到預(yù)設(shè)內(nèi)存占用量,則確定緩沖區(qū)的數(shù)據(jù)緩存占用量達(dá)到預(yù)設(shè)條件,如果內(nèi)存占用量未達(dá)到預(yù)設(shè)內(nèi)存占用量,則確定緩沖區(qū)的數(shù)據(jù)緩存占用量未達(dá)到預(yù)設(shè)條件。
[0068]檢測緩沖區(qū)的內(nèi)存占用量可以直觀的了解內(nèi)存的占用情況,如果內(nèi)存占用量達(dá)到預(yù)設(shè)內(nèi)存占用量就不允許數(shù)據(jù)獲取線程運(yùn)行并獲取數(shù)據(jù)放置在緩沖區(qū)中,因此通過合理的設(shè)置預(yù)設(shè)內(nèi)存占用量,可以保證內(nèi)存不被大量的占用。
[0069]可選地,在控制數(shù)據(jù)獲取線程處于等待狀態(tài)之后,如圖4所示,數(shù)據(jù)緩存處理裝置還包括:第二檢測模塊60和第三控制模塊70。
[0070]第二檢測模塊60,用于檢測緩沖區(qū)是否清空;以及
[0071]第三控制模塊70,用于在檢測到緩沖區(qū)清空時(shí),控制處于等待狀態(tài)的數(shù)據(jù)獲取線程發(fā)送請求信號。
[0072]處理程序不斷地從緩沖區(qū)取出數(shù)據(jù)進(jìn)行處理同時(shí)同步到本地?cái)?shù)據(jù)庫,并將該數(shù)據(jù)從緩沖區(qū)中刪除。從緩沖區(qū)刪除數(shù)據(jù)后,檢測緩沖區(qū)是否清空,如果檢測到緩沖區(qū)清空,則通知處于等待隊(duì)列中的數(shù)據(jù)獲取線程重新向線程控制模塊申請運(yùn)行。處于等待狀態(tài)的數(shù)據(jù)獲取線程只有在得到通知信號才再次向線程控制模塊申請運(yùn)行,這樣可以減少線程控制模塊的運(yùn)行頻率。
[0073]可選地,在控制數(shù)據(jù)獲取線程處于等待狀態(tài)之后,如圖5所示,數(shù)據(jù)緩存處理裝置還包括:第三檢測模塊80和第四控制模塊90。
[0074]第三檢測模塊80,用于檢測緩沖區(qū)的空閑存儲(chǔ)量是否大于預(yù)設(shè)存儲(chǔ)閾值;以及
[0075]第四控制模塊90,用于在檢測到緩沖區(qū)的空閑存儲(chǔ)量大于預(yù)設(shè)存儲(chǔ)閾值時(shí),控制處于等待狀態(tài)的數(shù)據(jù)獲取線程發(fā)送請求信號。
[0076]通過檢測緩沖區(qū)的空閑存儲(chǔ)量是否大于預(yù)設(shè)存儲(chǔ)閾值來判斷是否通知處于等待隊(duì)列中的數(shù)據(jù)獲取線程重新向線程控制模塊申請運(yùn)行,通過合理設(shè)置預(yù)設(shè)存儲(chǔ)閾值,可以避免由于緩存區(qū)沒有數(shù)據(jù)造成數(shù)據(jù)處理程序的空閑而降低數(shù)據(jù)處理效率。
[0077]根據(jù)本發(fā)明實(shí)施例提供的數(shù)據(jù)緩存處理裝置,該數(shù)據(jù)緩存處理裝置通過檢測模塊20檢測線程控制模塊檢測緩沖區(qū)的緩存占用量,并利用判斷模塊30判斷緩沖區(qū)的緩存占用量是否達(dá)到預(yù)設(shè)條件從而控制是否允許數(shù)據(jù)獲取線程運(yùn)行并獲取數(shù)據(jù)放入到緩沖區(qū)中,當(dāng)緩沖區(qū)的占用量達(dá)到預(yù)設(shè)條件時(shí)則禁止上述數(shù)據(jù)獲取線程運(yùn)行,從而避免了因數(shù)據(jù)處理速度滯后造成數(shù)據(jù)堆積在內(nèi)存中造成內(nèi)存被長時(shí)間占用的問題,達(dá)到了高效的利用內(nèi)存的效果。
[0078]顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計(jì)算裝置來實(shí)現(xiàn),它們可以集中在單個(gè)的計(jì)算裝置上,或者分布在多個(gè)計(jì)算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計(jì)算裝置可執(zhí)行的程序代碼來實(shí)現(xiàn),從而,可以將它們存儲(chǔ)在存儲(chǔ)裝置中由計(jì)算裝置來執(zhí)行,或者將它們分別制作成各個(gè)集成電路模塊,或者將它們中的多個(gè)模塊或步驟制作成單個(gè)集成電路模塊來實(shí)現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。
[0079]以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種數(shù)據(jù)緩存處理方法,其特征在于,包括: 接收數(shù)據(jù)獲取線程獲取數(shù)據(jù)的請求信號; 檢測緩沖區(qū)的數(shù)據(jù)緩存占用量,其中,所述緩沖區(qū)用于緩存所述數(shù)據(jù)獲取線程請求獲取的數(shù)據(jù); 判斷所述緩沖區(qū)的數(shù)據(jù)緩存占用量是否達(dá)到預(yù)設(shè)條件; 如果判斷所述緩沖區(qū)的數(shù)據(jù)緩存占用量達(dá)到所述預(yù)設(shè)條件,則控制所述數(shù)據(jù)獲取線程處于等待狀態(tài);以及 如果判斷所述緩沖區(qū)的數(shù)據(jù)緩存占用量未達(dá)到所述預(yù)設(shè)條件,則控制所述數(shù)據(jù)獲取線程處于運(yùn)行狀態(tài)。
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)緩存處理方法,其特征在于,檢測緩沖區(qū)的數(shù)據(jù)緩存占用量包括:檢測所述緩沖區(qū)的緩存占用長度,其中,所述緩存占用長度用于表示所述緩沖區(qū)已經(jīng)執(zhí)行緩存的次數(shù),判斷所述緩沖區(qū)的數(shù)據(jù)緩存占用量是否達(dá)到預(yù)設(shè)條件包括: 判斷所述緩存占用長度是否達(dá)到預(yù)設(shè)數(shù)量, 其中,如果所述緩存占用長度達(dá)到所述預(yù)設(shè)數(shù)量,則確定所述緩沖區(qū)的數(shù)據(jù)緩存占用量達(dá)到所述預(yù)設(shè)條件,如果所述緩存占用長度未達(dá)到所述預(yù)設(shè)數(shù)量,則確定所述緩沖區(qū)的數(shù)據(jù)緩存占用量未達(dá)到所述預(yù)設(shè)條件。
3.根據(jù)權(quán)利要求1所述的數(shù)據(jù)緩存處理方法,其特征在于,檢測緩沖區(qū)的數(shù)據(jù)緩存占用量包括:檢測所述緩沖區(qū)的內(nèi)存占用量,判斷所述緩沖區(qū)的數(shù)據(jù)緩存占用量是否達(dá)到預(yù)設(shè)條件包括: 判斷所述內(nèi)存占用量是否達(dá)到預(yù)設(shè)內(nèi)存占用量, 其中,如果所述內(nèi)存占用量達(dá)到所述預(yù)設(shè)內(nèi)存占用量,則確定所述緩沖區(qū)的數(shù)據(jù)緩存占用量達(dá)到所述預(yù)設(shè)條件,如果所述內(nèi)存占用量未達(dá)到所述預(yù)設(shè)內(nèi)存占用量,則確定所述緩沖區(qū)的數(shù)據(jù)緩存占用量未達(dá)到所述預(yù)設(shè)條件。
4.根據(jù)權(quán)利要求1所述的數(shù)據(jù)緩存處理方法,其特征在于,在控制所述數(shù)據(jù)獲取線程處于等待狀態(tài)之后,所述數(shù)據(jù)緩存處理方法還包括: 檢測所述緩沖區(qū)是否清空;以及 如果檢測到所述緩沖區(qū)清空,則控制處于等待狀態(tài)的所述數(shù)據(jù)獲取線程發(fā)送所述請求信號。
5.根據(jù)權(quán)利要求1所述的數(shù)據(jù)緩存處理方法,其特征在于,在控制所述數(shù)據(jù)獲取線程處于等待狀態(tài)之后,所述數(shù)據(jù)緩存處理方法還包括: 檢測所述緩沖區(qū)的空閑存儲(chǔ)量是否大于預(yù)設(shè)存儲(chǔ)閾值;以及 如果檢測到所述緩沖區(qū)的空閑存儲(chǔ)量大于預(yù)設(shè)存儲(chǔ)閾值,則控制處于等待狀態(tài)的所述數(shù)據(jù)獲取線程發(fā)送所述請求信號。
6.一種數(shù)據(jù)緩存處理裝置,其特征在于,包括: 接收模塊,用于接收數(shù)據(jù)獲取線程獲取數(shù)據(jù)的請求信號; 檢測模塊,用于檢測緩沖區(qū)的數(shù)據(jù)緩存占用量,其中,所述緩沖區(qū)用于緩存所述數(shù)據(jù)獲取線程請求獲取的數(shù)據(jù); 判斷模塊,用于判斷所述緩沖區(qū)的數(shù)據(jù)緩存占用量是否達(dá)到預(yù)設(shè)條件; 第一控制模塊,用于當(dāng)判斷所述緩沖區(qū)的數(shù)據(jù)緩存占用量達(dá)到所述預(yù)設(shè)條件時(shí),控制所述數(shù)據(jù)獲取線程處于等待狀態(tài);以及 第二控制模塊,用于當(dāng)判斷所述緩沖區(qū)的數(shù)據(jù)緩存占用量未達(dá)到所述預(yù)設(shè)條件時(shí),則控制所述數(shù)據(jù)獲取線程處于運(yùn)行狀態(tài)。
7.根據(jù)權(quán)利要求6所述的數(shù)據(jù)緩存處理裝置,其特征在于,檢測緩沖區(qū)的數(shù)據(jù)緩存占用量包括:檢測所述緩沖區(qū)的緩存占用長度,其中,所述緩存占用長度用于表示所述緩沖區(qū)已經(jīng)執(zhí)行緩存的次數(shù),所述判斷模塊包括: 第一判斷單元,用于判斷所述緩存占用長度是否達(dá)到預(yù)設(shè)數(shù)量, 其中,如果所述緩存占用長度達(dá)到所述預(yù)設(shè)數(shù)量,則確定所述緩沖區(qū)的數(shù)據(jù)緩存占用量達(dá)到所述預(yù)設(shè)條件,如果所述緩存占用長度未達(dá)到所述預(yù)設(shè)數(shù)量,則確定所述緩沖區(qū)的數(shù)據(jù)緩存占用量未達(dá)到所述預(yù)設(shè)條件。
8.根據(jù)權(quán)利要求6所述的數(shù)據(jù)緩存處理裝置,其特征在于,檢測緩沖區(qū)的數(shù)據(jù)緩存占用量包括:檢測所述緩沖區(qū)的內(nèi)存占用量,所述判斷模塊包括: 第二判斷單元,用于判斷所述內(nèi)存占用量是否達(dá)到預(yù)設(shè)內(nèi)存占用量, 其中,如果所述內(nèi)存占用量達(dá)到所述預(yù)設(shè)內(nèi)存占用量,則確定所述緩沖區(qū)的數(shù)據(jù)緩存占用量達(dá)到所述預(yù)設(shè)條件,如果所述內(nèi)存占用量未達(dá)到所述預(yù)設(shè)內(nèi)存占用量,則確定所述緩沖區(qū)的數(shù)據(jù)緩存占用量未達(dá)到所述預(yù)設(shè)條件。
9.根據(jù)權(quán)利要求6所述的數(shù)據(jù)緩存處理裝置,其特征在于,在控制所述數(shù)據(jù)獲取線程處于等待狀態(tài)之后,所述數(shù)據(jù)緩存處理裝置還包括: 第二檢測模塊,用于檢測所述緩沖區(qū)是否清空;以及 第三控制模塊,用于在檢測到所述緩沖區(qū)清空時(shí),控制處于等待狀態(tài)的所述數(shù)據(jù)獲取線程發(fā)送所述請求信號。
10.根據(jù)權(quán)利要求6所述的數(shù)據(jù)緩存處理裝置,其特征在于,在控制所述數(shù)據(jù)獲取線程處于等待狀態(tài)之后,所述數(shù)據(jù)緩存處理裝置還包括: 第三檢測模塊,用于檢測所述緩沖區(qū)的空閑存儲(chǔ)量是否大于預(yù)設(shè)存儲(chǔ)閾值; 以及 第四控制模塊,用于在檢測到所述緩沖區(qū)的空閑存儲(chǔ)量大于預(yù)設(shè)存儲(chǔ)閾值時(shí),控制處于等待狀態(tài)的所述數(shù)據(jù)獲取線程發(fā)送所述請求信號。
【文檔編號】G06F12/08GK104182361SQ201410412521
【公開日】2014年12月3日 申請日期:2014年8月20日 優(yōu)先權(quán)日:2014年8月20日
【發(fā)明者】杜德文 申請人:北京國雙科技有限公司