本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,特別是涉及一種數(shù)據(jù)處理方法及裝置。
背景技術(shù):
生產(chǎn)者消費者模型,是一種常見的數(shù)據(jù)處理模型。當采用生產(chǎn)者消費者模型進行數(shù)據(jù)處理時,生產(chǎn)者間所產(chǎn)生的數(shù)據(jù)存放在緩沖區(qū)內(nèi),消費者從緩沖區(qū)內(nèi)取出數(shù)據(jù)進行處理。
現(xiàn)有技術(shù)中,一般通過輪詢的方式,即消費者在需要對應(yīng)的數(shù)據(jù)時,對緩沖區(qū)內(nèi)生產(chǎn)者所產(chǎn)生的數(shù)據(jù)進行輪詢,以獲取對應(yīng)的數(shù)據(jù)并進行處理。
但是,現(xiàn)有的采用生產(chǎn)者消費者模型進行資源數(shù)據(jù)處理的方法,存在著實時性差的問題。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例解決的技術(shù)問題是在采用生產(chǎn)者消費者模型對資源數(shù)據(jù)處理時,如何提高資源數(shù)據(jù)處理的實時性。
為解決上述問題,本發(fā)明實施例提供了一種數(shù)據(jù)處理方法,所述方法包括:
當生產(chǎn)者線程產(chǎn)生資源數(shù)據(jù)時,判斷消費者線程是否需要所述資源數(shù)據(jù);
當確定所述消費者線程需要所述資源數(shù)據(jù)時,激活所述消費者線程對所述資源數(shù)據(jù)進行處理。
可選地,所述判斷消費者線程是否需要所述資源數(shù)據(jù),包括:
判斷消費者需求隊列中是否存在所述資源數(shù)據(jù)的需求信息;
當確定所述消費者需求隊列中存在所述資源數(shù)據(jù)的需求信息時,確定所述消費者線程需要所述資源數(shù)據(jù)。
可選地,當確定所述消費者線程不需要所述資源數(shù)據(jù)時,所述方法還包括:
將所述資源數(shù)據(jù)放入預(yù)設(shè)的生產(chǎn)者生產(chǎn)隊列。
可選地,所述方法還包括:
當消費者線程需求資源數(shù)據(jù)時,判斷所述生產(chǎn)者生產(chǎn)隊列中是否存在對應(yīng)的資源數(shù)據(jù);
當確定所述生產(chǎn)者生產(chǎn)隊列中存在對應(yīng)的資源數(shù)據(jù)時,使得所述消費者線程從所述生產(chǎn)者生產(chǎn)隊列中取出所述資源數(shù)據(jù)進行處理。
可選地,當確定所述生產(chǎn)者生產(chǎn)隊列中不存在對應(yīng)的資源數(shù)據(jù)時,所述方法還包括:
將對應(yīng)的資源數(shù)據(jù)需求加入所述消費者需求隊列中,以在預(yù)設(shè)時間內(nèi)對應(yīng)的資源數(shù)據(jù)產(chǎn)生時,使得所述消費者線程獲取對應(yīng)的資源數(shù)據(jù)并處理。
本發(fā)明實施例還提供了一種數(shù)據(jù)處理裝置,包括:
第一判斷單元,適于當生產(chǎn)者線程產(chǎn)生資源數(shù)據(jù)時,判斷消費者線程是否需要所述資源數(shù)據(jù);
激活單元,適于當所述消費者線程需要所述資源數(shù)據(jù)時,激活所述消費者線程對所述資源數(shù)據(jù)進行處理。
可選地,所述第一判斷單元,適于判斷消費者需求隊列中是否存在所述資源數(shù)據(jù)的需求信息;當確定所述消費者需求隊列中存在所述資源數(shù)據(jù)的需求信息時,確定所述消費者線程需要所述資源數(shù)據(jù)。
可選地,所述裝置還包括:
第一存放單元,適于當確定所述消費者線程不需要所述資源數(shù)據(jù)時,將所述資源數(shù)據(jù)放入預(yù)設(shè)的生產(chǎn)者生產(chǎn)隊列。
可選地,所述裝置還包括:
第二判斷單元,適于當消費者線程需求資源數(shù)據(jù)時,判斷所述生產(chǎn)者生產(chǎn)隊列中是否存在對應(yīng)的資源數(shù)據(jù);
觸發(fā)單元,適于當確定所述生產(chǎn)者生產(chǎn)隊列中存在對應(yīng)的資源數(shù)據(jù)時,使得所述消費者線程從所述生產(chǎn)者生產(chǎn)隊列中取出所述資源數(shù)據(jù)進行處理。
可選地,所述裝置還包括:第二存放單元,適于當確定所述生產(chǎn)者生產(chǎn)隊列中不存在對應(yīng)的資源數(shù)據(jù)時,將對應(yīng)的資源數(shù)據(jù)需求加入所述消費者需求隊列中,以在預(yù)設(shè)時間內(nèi)對應(yīng)的資源數(shù)據(jù)產(chǎn)生時,使得所述消費者線程獲取對應(yīng)的資源數(shù)據(jù)并處理。
與現(xiàn)有技術(shù)相比,本發(fā)明的技術(shù)方案具有以下的優(yōu)點:
上述的方案,通過在生產(chǎn)者線程產(chǎn)生對應(yīng)的資源數(shù)據(jù),且確定消費者線程需求所產(chǎn)生的資源數(shù)據(jù)時,激活所述消費者線程對所述資源數(shù)據(jù)進行處理,與采用輪詢的方式相比,可以節(jié)省消費者線程獲取資源數(shù)據(jù)的時間,故可以提高資源數(shù)據(jù)處理的實時性。
進一步地,當消費者線程在需要資源數(shù)據(jù)時,通過對生產(chǎn)者生產(chǎn)隊列中的資源數(shù)據(jù)進行查詢,以在確定生產(chǎn)者生產(chǎn)隊列中存在對應(yīng)的資源數(shù)據(jù)時,可以獲取對應(yīng)的資源數(shù)據(jù)并進行處理,可以使得消費者及時地獲取對應(yīng)的資源數(shù)據(jù)并進行處理,因而可以進一步提高數(shù)據(jù)處理的實時性。
附圖說明
圖1是本發(fā)明實施例中的一種數(shù)據(jù)處理的方法的流程圖;
圖2是本發(fā)明實施例中另一種數(shù)據(jù)處理的方法的流程圖;
圖3是本發(fā)明實施例中又一種數(shù)據(jù)處理的方法的流程圖;
圖4是本發(fā)明實施例中的一種數(shù)據(jù)處理裝置的結(jié)構(gòu)示意圖。
具體實施方式
正如背景技術(shù)所言,現(xiàn)有的采用生產(chǎn)者和消費者模型進行數(shù)據(jù)處理的方法,當生產(chǎn)者線程產(chǎn)生對應(yīng)的資源數(shù)據(jù)時,需要等待消費者線程通過輪詢的方式查詢到對應(yīng)的資源數(shù)據(jù)時,方可對查詢得到的資源數(shù)據(jù)進行處理,存在著實時性差的問題。
為解決現(xiàn)有技術(shù)中存在的上述問題,本發(fā)明實施例采用的技術(shù)方案通過在生產(chǎn)者線程產(chǎn)生對應(yīng)的資源數(shù)據(jù),且確定消費者線程需求所產(chǎn)生的資源數(shù)據(jù)時,激活所述消費者線程對所述資源數(shù)據(jù)進行處理,與采用輪詢的方式相比,可以提高資源數(shù)據(jù)處理的實時性。
為使本發(fā)明的上述目的、特征和優(yōu)點能夠更為明顯易懂,下面結(jié)合附圖對本發(fā)明的具體實施例做詳細的說明。
圖1示出了本發(fā)明實施例中的一種進程間通信的方法的流程圖。如圖1所示的進程間通信的方法,適于對屏幕界面上顯示的待錄制對象進行錄制具體可以包括如下的操作:
步驟s101:當生產(chǎn)者線程產(chǎn)生資源數(shù)據(jù)時,判斷消費者線程是否需要所述資源數(shù)據(jù)。
在具體實施中,生產(chǎn)者線程為產(chǎn)生資源數(shù)據(jù)的線程,消費者線程對對生產(chǎn)者線程產(chǎn)生的資源數(shù)據(jù)進行處理的線程。其中,生產(chǎn)者線程和消費者線程的數(shù)量可以根據(jù)實際的需要設(shè)置為一個或者多個。
步驟s102:當確定所述消費者線程需要所述資源數(shù)據(jù)時,激活所述消費者線程對所述資源數(shù)據(jù)進行處理。
在具體實施中,在生產(chǎn)者線程產(chǎn)生對應(yīng)的資源數(shù)據(jù),且確定消費者線程需求所產(chǎn)生的資源數(shù)據(jù)時,可以激活所述消費者線程對所述資源數(shù)據(jù)進行處理,與采用輪詢的方式相比,可以提高資源數(shù)據(jù)處理的實時性。
下面將結(jié)合圖2和圖對本發(fā)明實施例中的一種數(shù)據(jù)處理方法進行進一步詳細的描述。
圖2示出了發(fā)明實施例中的一種數(shù)據(jù)處理方法的流程圖。參見圖2,本發(fā)明實施中的一種數(shù)據(jù)處理方法,適于采用生產(chǎn)者消費者模型對數(shù)據(jù)進行處理,具體可以包括如下的步驟。
步驟s201:生產(chǎn)者線程產(chǎn)生對應(yīng)的資源數(shù)據(jù)。
在具體實施中,生產(chǎn)者線程產(chǎn)生對應(yīng)的資源數(shù)據(jù)的方式可以根據(jù)實際的需要進行設(shè)置。其中,生產(chǎn)者線程可以為一個或者多個,同一個生產(chǎn)者線程可以根據(jù)實際的需要產(chǎn)生資源數(shù)據(jù)可以相同也可以不同,不同的生產(chǎn)者線程所產(chǎn)生的資源數(shù)據(jù)可以相同也可以不同。
步驟s202:判斷消費者需求隊列中是否存在所述資源數(shù)據(jù)的需求信息;當判斷結(jié)果為是時,可以執(zhí)行步驟s203;反之,則可以執(zhí)行步驟s204。
在本發(fā)明一實施例中,為了對不同的資源數(shù)據(jù)進行區(qū)分,在資源數(shù)據(jù)產(chǎn)生時,可以采用預(yù)設(shè)的規(guī)則對所產(chǎn)生的資源數(shù)據(jù)進行命名,也即生產(chǎn)者線程所產(chǎn)生的資源數(shù)據(jù)為有名資源數(shù)據(jù)。同時,消費者線程所需要的資源數(shù)據(jù)也為有名資源數(shù)據(jù)。換言之,消費者線程僅處理相應(yīng)的有名資源數(shù)據(jù)。
在本發(fā)明一實施中,當消費者需求資源數(shù)據(jù),且無法立即獲取到對應(yīng)的資源數(shù)據(jù)時,消費者線程可以生成對應(yīng)的資源數(shù)據(jù)需求信息,并將所生成的資源數(shù)據(jù)需求信息加入到預(yù)設(shè)的消費者需求隊列中,以在對應(yīng)的資源數(shù)據(jù)產(chǎn)生時,可以及時地獲取對應(yīng)的資源數(shù)據(jù)并進行處理。其中,消費者線程所生成的資源數(shù)據(jù)需求信息中包括對應(yīng)的資源數(shù)據(jù)的信息,如有名資源數(shù)據(jù)的名稱等。
在具體實施中,消費者需求隊列中的資源數(shù)據(jù)需求信息為一個消費者線程的資源數(shù)據(jù)的需求信息,也可以為兩個以上的消費者線程的資源數(shù)據(jù)的需求信息,本領(lǐng)域的技術(shù)人員可以根據(jù)實際的需要進行設(shè)置,在此不做限制。其中,當消費者線程為多個時,消費者線程所生成的資源數(shù)據(jù)的需求信息中還包括消費者線程的信息,以可以根據(jù)消費者需求隊列中的資源數(shù)據(jù)需求信息確定消費者線程及其所需求的資源數(shù)據(jù)的信息。
步驟s203:激活所述消費者線程對所述資源數(shù)據(jù)進行處理。
在具體實施中,當確定消費者線程需要所產(chǎn)生的資源數(shù)據(jù)時,根據(jù)消費者需求隊列中對應(yīng)的資源數(shù)據(jù)需求信息確定對應(yīng)的消費者線程的信息,并激活對應(yīng)的消費者線程,以使得對應(yīng)的消費者線程可以獲取所產(chǎn)生的資源數(shù)據(jù)并進行相應(yīng)的處理。當消費者線程獲取到對應(yīng)的資源數(shù)據(jù)時,消費者需求隊列中對應(yīng)的資源數(shù)據(jù)的需求信息將被刪除。
步驟s204:將所述資源數(shù)據(jù)放入生產(chǎn)者生產(chǎn)隊列中。
在具體實施中,當確定消費者需求隊列中不存在對應(yīng)的資源數(shù)據(jù)需求信息時,也即所產(chǎn)生的資源數(shù)據(jù)沒有消費者線程需要。此時,生產(chǎn)者線程可以將所產(chǎn)生的資源數(shù)據(jù)放入對應(yīng)的生產(chǎn)者生產(chǎn)隊列中,以等待對應(yīng)的消費者獲取對應(yīng)的資源數(shù)據(jù)并進行處理。
上述以生產(chǎn)者線程產(chǎn)生對應(yīng)的資源數(shù)據(jù)時對應(yīng)的處理過程對本發(fā)明實施例中的數(shù)據(jù)處理方法進行了詳細的介紹,下面將結(jié)合圖3從消費者線程在需求資源數(shù)據(jù)時本發(fā)明實施例中的一種數(shù)據(jù)處理方法進行進一步詳細的介紹。
參見圖3,為了使得消費者線程可以及時地獲取對應(yīng)的資源數(shù)據(jù)進行處理,本發(fā)明實施例中的數(shù)據(jù)處理方法還可以包括:
步驟s301:當所述消費者需要對應(yīng)的資源數(shù)據(jù)時,判斷所述生產(chǎn)者隊列中是否存在對應(yīng)的資源數(shù)據(jù);當判斷結(jié)果為是時,可以執(zhí)行步驟s302;反之,則可以執(zhí)行步驟s303。
在具體實施中,生產(chǎn)者所產(chǎn)生的資源數(shù)據(jù)在無法找到對應(yīng)消費者線程進行處理時,生產(chǎn)者線程可以將對應(yīng)的資源數(shù)據(jù)存放至預(yù)設(shè)的生產(chǎn)者生產(chǎn)隊列中。其中,生產(chǎn)者生產(chǎn)隊列中的資源數(shù)據(jù)可以為一個生產(chǎn)者線程產(chǎn)生的資源數(shù)據(jù),也可以包括兩個以上的生產(chǎn)者線程所產(chǎn)生的資源數(shù)據(jù)。
在具體實施中,當消費者線程需要資源數(shù)據(jù)時,可以通過在生產(chǎn)者生產(chǎn)隊列中查詢是否存在對應(yīng)的資源數(shù)據(jù),以確定對應(yīng)的資源數(shù)據(jù)已經(jīng)產(chǎn)生。
步驟s302:所述消費者線程從所述生產(chǎn)者生產(chǎn)隊列中取出對應(yīng)的資源數(shù)據(jù)進行處理。
在具體實施中,消費者線程在確定生產(chǎn)者生產(chǎn)隊列中存在對應(yīng)的資源數(shù)據(jù)時,便可以從生產(chǎn)者生產(chǎn)隊列中取出對應(yīng)的資源數(shù)據(jù)并進行相應(yīng)的處理。
步驟s303:生成對應(yīng)的資源數(shù)據(jù)需求信息并加入消費者需求隊列中。
在具體實施中,消費者線程在確定生產(chǎn)者隊列中不存在對應(yīng)的資源數(shù)據(jù)時,可以生成對應(yīng)的資源數(shù)據(jù)的需求信息,并放入消費者需求隊列中,以在對應(yīng)的資源數(shù)據(jù)產(chǎn)生時,可以及時地獲取對應(yīng)的資源數(shù)據(jù)。
在具體實施中,當將所生成的資源數(shù)據(jù)的需求信息放入對應(yīng)的消費者需求隊列中時,消費者線程將進入等待狀態(tài),以在預(yù)設(shè)的時間段內(nèi)等待對應(yīng)的資源數(shù)據(jù)的產(chǎn)生,并在對應(yīng)的資源數(shù)據(jù)產(chǎn)生時,可以獲取對應(yīng)的資源數(shù)據(jù)并進行處理。其中,預(yù)設(shè)的時間可以根據(jù)實際的需要進行設(shè)置。
在具體實施中,當在預(yù)設(shè)的時間內(nèi)生產(chǎn)者線程產(chǎn)生對應(yīng)的資源數(shù)據(jù)時,則消費者線程等待成功。此時,消費者線程可以獲取對應(yīng)的資源數(shù)據(jù)并進行處理。同時,消費者需求隊列中對應(yīng)的資源數(shù)據(jù)需求信息也將被刪除。當在預(yù)設(shè)的時間內(nèi)沒有對應(yīng)的資源數(shù)據(jù)產(chǎn)生時,則消費者線程等待失敗。同時,消費者需求中隊列中對應(yīng)的資源數(shù)據(jù)需求信息也同樣被刪除。
上述對本發(fā)明實施例中的方法進行了詳細的描述,下面將對上述的方法對應(yīng)的裝置進行介紹。
圖4示出了本發(fā)明實施例還提供了一種數(shù)據(jù)處理裝置的結(jié)構(gòu)示意圖。參見圖4,本發(fā)明實施例中的一種數(shù)據(jù)處理裝置40,可以包括第一判斷單元401和激活單元402,其中:
第一判斷單元401,適于當生產(chǎn)者線程產(chǎn)生資源數(shù)據(jù)時,判斷消費者線程是否需要所述資源數(shù)據(jù);在本發(fā)明一實施例中,所述第一判斷單元401,適于判斷消費者需求隊列中是否存在所述資源數(shù)據(jù)的需求信息;當確定所述消費者需求隊列中存在所述資源數(shù)據(jù)的需求信息時,確定所述消費者線程需要所述資源數(shù)據(jù)。
激活單元402,適于當所述消費者線程需要所述資源數(shù)據(jù)時,激活所述消費者線程對所述資源數(shù)據(jù)進行處理。
在具體實施中,所述裝置400還可以包括第一存放單元403,其中:
第一存放單元403,適于當確定所述消費者線程不需要所述資源數(shù)據(jù)時,將所述資源數(shù)據(jù)放入預(yù)設(shè)的生產(chǎn)者生產(chǎn)隊列。
在具體實施中,所述裝置400還可以包括第二判斷單元404和觸發(fā)單元405,其中:
第二判斷單元404,適于當消費者線程需求資源數(shù)據(jù)時,判斷所述生產(chǎn)者生產(chǎn)隊列中是否存在對應(yīng)的資源數(shù)據(jù);
觸發(fā)單元405,適于當確定所述生產(chǎn)者生產(chǎn)隊列中存在對應(yīng)的資源數(shù)據(jù)時,使得所述消費者線程從所述生產(chǎn)者生產(chǎn)隊列中取出所述資源數(shù)據(jù)進行處理。
在具體實施中,所述裝置400還可以包括第二存放單元406,其中:
第二存放單元406,適于當確定所述生產(chǎn)者生產(chǎn)隊列中不存在對應(yīng)的資源數(shù)據(jù)時,將對應(yīng)的資源數(shù)據(jù)需求加入所述消費者需求隊列中,以在預(yù)設(shè)時間內(nèi)對應(yīng)的資源數(shù)據(jù)產(chǎn)生時,使得所述消費者線程獲取對應(yīng)的資源數(shù)據(jù)并處理。
采用本發(fā)明實施例中的上述方案,通過在生產(chǎn)者線程產(chǎn)生對應(yīng)的資源數(shù)據(jù),且確定消費者線程需求所產(chǎn)生的資源數(shù)據(jù)時,激活所述消費者線程對所述資源數(shù)據(jù)進行處理,與采用輪詢的方式相比,可以提高資源數(shù)據(jù)處理的實時性。
本領(lǐng)域普通技術(shù)人員可以理解上述實施例的各種方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,該程序可以存儲于計算機可讀存儲介質(zhì)中,存儲介質(zhì)可以包括:rom、ram、磁盤或光盤等。
以上對本發(fā)明實施例的方法及系統(tǒng)做了詳細的介紹,本發(fā)明并不限于此。任何本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),均可作各種更動與修改,因此本發(fā)明的保護范圍應(yīng)當以權(quán)利要求所限定的范圍為準。