專利名稱::一種電子產(chǎn)品碼多線程處理方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種電子產(chǎn)品碼的處理方法,尤其設(shè)計(jì)一種電子產(chǎn)品碼的多線程處理方法。技術(shù)背景RFID(RadioFrequencyIdentification)技術(shù)是新一代的非接觸識(shí)別技術(shù),以其高效、抗干擾能力強(qiáng)、識(shí)別速度快而聞名。RFID技術(shù)的應(yīng)用將會(huì)給物流、醫(yī)藥、食品、危險(xiǎn)品等相關(guān)行業(yè)帶來生產(chǎn)效率的根本性提高并能促進(jìn)高危行業(yè)的生產(chǎn)安全性。RFID技術(shù)的大規(guī)模應(yīng)用依賴于RFID中間件的發(fā)展。RFID中間件向下層硬件提供普適的接口,有效屏蔽下層硬件的差異性;它同時(shí)也提供對(duì)RFIDTAG數(shù)據(jù)處理(過濾、分組等)的功能。RFID中間件在整個(gè)RFID應(yīng)用中擔(dān)負(fù)著數(shù)據(jù)處理的重要角色,它的性能成為整個(gè)RFID中間件使能應(yīng)用的性能瓶頸,所以RFID中間件中電子產(chǎn)品碼的處理機(jī)構(gòu)——電子產(chǎn)品碼處理單元的性能成為研究的重點(diǎn)。國際組織EPCGlobal對(duì)RFID技術(shù)及RFID中間件等相關(guān)領(lǐng)域部件的功能給予了定義和規(guī)范化說明,與電子產(chǎn)品碼數(shù)據(jù)處理相關(guān)的規(guī)范是ALE(ApplicationLevelEvent)規(guī)范。它規(guī)定了電子產(chǎn)品碼數(shù)據(jù)處理的流程和處理單元的功能,但沒有給出處理單元設(shè)計(jì)實(shí)現(xiàn)等的相關(guān)內(nèi)容。于此同時(shí),國內(nèi)關(guān)于RFID技術(shù)及RFID中間件技術(shù)的規(guī)范也正在積極制定中。目前已問世的RFID中間件產(chǎn)品中,存在使用線程組處理電子產(chǎn)品碼的方法,但其線程組中工作線程的規(guī)模不可控,并耳使用單緩沖區(qū)或者鏈?zhǔn)?、多?jí)緩沖區(qū)緩沖數(shù)據(jù)。這種方法能夠達(dá)至u不丟失數(shù)據(jù)、多線程處理數(shù)據(jù)的目的,但當(dāng)線程對(duì)緩沖區(qū)進(jìn)行同步時(shí),系統(tǒng)額外消耗仍然較大,沒有充分利用計(jì)算機(jī)系統(tǒng)資源來真正處理電子產(chǎn)品碼的數(shù)據(jù)。特別是在某些極端的大數(shù)據(jù)量的應(yīng)用場景下,系統(tǒng)計(jì)算資源顯得十分寶貴,這種不充分利用系統(tǒng)資源的缺陷,降低了RFID中間件在處理電子產(chǎn)品碼的性能。
發(fā)明內(nèi)容本發(fā)明的目的在于克服上述工作線程不易控制及電子產(chǎn)品碼處理單元不能充分利用計(jì)算資源的缺點(diǎn),提供了一種能夠使得工作線程更加容易控制以及更加高效利用系統(tǒng)計(jì)算資源的,基于多線程雙緩沖區(qū)的,能夠提高RFID中間件對(duì)電子產(chǎn)品碼數(shù)據(jù)的處理能力的電子產(chǎn)品碼多線程處理方法。為達(dá)到上述目的,本發(fā)明采用的技術(shù)方案是1)處理數(shù)據(jù)的線程組使用兩個(gè)線程安全的緩沖區(qū),其中一個(gè)作為工作線程處理數(shù)據(jù)的場所,另一個(gè)接收新的待處理的電子產(chǎn)品碼數(shù)據(jù);2)線程組維護(hù)兩個(gè)緩沖區(qū)的引用,其中一個(gè)指向數(shù)據(jù)處理緩沖區(qū),另一個(gè)指向待處理數(shù)據(jù)緩沖區(qū),工作線程持有處理數(shù)據(jù)緩沖引用,待處理數(shù)據(jù)提供者持有待處理數(shù)據(jù)緩沖區(qū)引用;3)計(jì)算數(shù)據(jù)處理緩沖區(qū)中的數(shù)據(jù)量與工作線程之比E,如E大于V,則轉(zhuǎn)向8),否則轉(zhuǎn)向4),其中V為用戶定義的閾值;4)工作線程處理數(shù)據(jù)處理緩沖區(qū)中的電子產(chǎn)品碼數(shù)據(jù),數(shù)據(jù)提供者將電子產(chǎn)品碼數(shù)據(jù)放入待處理數(shù)據(jù)緩沖區(qū),當(dāng)數(shù)據(jù)處理緩沖區(qū)中的電子產(chǎn)品碼數(shù)據(jù)被工作線程處理完后,轉(zhuǎn)向5;5)系統(tǒng)交換兩個(gè)引用的值使工作線程持有引用的值指向原先的待處理數(shù)據(jù)緩沖區(qū);數(shù)據(jù)提供者持有引用的值指向原先的數(shù)據(jù)處理緩沖區(qū),如工作線程引用的當(dāng)前值指向的緩沖區(qū)含有數(shù)據(jù),則轉(zhuǎn)向3),否則轉(zhuǎn)向6);6)系統(tǒng)周期性的檢查待處理數(shù)據(jù)緩沖區(qū)是否為空,周期長度為用戶配置的周期長度,若有數(shù)據(jù)進(jìn)入則轉(zhuǎn)向5),若輪詢次數(shù)達(dá)到N時(shí),N用戶配置的值,且空閑工作線程數(shù)目大于MIN時(shí),MIN用戶配置的值,則轉(zhuǎn)向7);若輪詢次數(shù)達(dá)到N且空閑工作線程數(shù)目小于等于MIN時(shí),則轉(zhuǎn)向6)。7)按照用戶配置的幅度D減少工作線程數(shù)量,輪詢次數(shù)重置為0,轉(zhuǎn)向6);8)增加一次忙碌計(jì)數(shù)M,M的初始值為0,如M大于等于用戶配置的閥值B且工作線程數(shù)目小于用戶配置的MAX時(shí),轉(zhuǎn)向9);如M大于等于閥值B且工作線程數(shù)數(shù)目大于等于MAX時(shí),轉(zhuǎn)向4);9)按照用戶配置的幅度R增加工作線程數(shù)量,轉(zhuǎn)向4)10)本系統(tǒng)的運(yùn)行行為是無限循環(huán)的伺服行為,當(dāng)系統(tǒng)處于運(yùn)行狀態(tài)時(shí),用戶借由系統(tǒng)外界通過系統(tǒng)提供的接口調(diào)用,向系統(tǒng)發(fā)送停機(jī)指令,系統(tǒng)即檢査工作狀態(tài)、完成必要處理工作、持久化緩存數(shù)據(jù)、回收緩沖、釋放系統(tǒng)資源,從而完成系統(tǒng)的推出,循環(huán)伺服狀態(tài)即告結(jié)束。本發(fā)明使用自動(dòng)控制工作線程數(shù)量的雙緩沖線程組對(duì)電子產(chǎn)品碼數(shù)據(jù)進(jìn)行處理系統(tǒng)負(fù)載重時(shí),線程組自動(dòng)增加工作線程數(shù)量,以適應(yīng)大吞吐量數(shù)據(jù)的處理要求;當(dāng)系統(tǒng)負(fù)載輕時(shí),線程組自動(dòng)減少工作線程數(shù)量,以節(jié)約系統(tǒng)額外消耗。所有處理數(shù)據(jù)的工作線程使用一個(gè)緩沖區(qū)處理數(shù)據(jù)的同時(shí),使用另一個(gè)緩沖區(qū)接收新數(shù)據(jù),分離對(duì)同一緩沖區(qū)的讀寫操作,減輕了線程同步的消耗。同時(shí),存在兩個(gè)分別指向處理數(shù)據(jù)緩沖區(qū)和待處理數(shù)據(jù)緩沖區(qū)的引用,各工作線程持有前者,新數(shù)據(jù)提供者持有后者,在數(shù)據(jù)處理緩沖區(qū)為空時(shí),交換緩沖區(qū)引用,使得系統(tǒng)繼續(xù)處理和接收數(shù)據(jù)。通過可伸縮的雙緩沖線程組,避免了工作線程對(duì)同一緩沖區(qū)的讀寫同步,降低系統(tǒng)額外消耗,提升系統(tǒng)對(duì)電子產(chǎn)品碼的處理能力。圖1是本發(fā)明的模型圖;圖2是本發(fā)明的流程狀態(tài)轉(zhuǎn)換圖。具體實(shí)施方式下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步說明。本發(fā)明的多線程處理方法如下1)處理數(shù)據(jù)的線程組使用兩個(gè)線程安全的緩沖區(qū),其中一個(gè)作為工作線程處理數(shù)據(jù)的場所,另一個(gè)接收新的待處理的電子產(chǎn)品碼數(shù)據(jù);2)線程組維護(hù)兩個(gè)緩沖區(qū)的引用,其中一個(gè)指向數(shù)據(jù)處理緩沖區(qū),另一個(gè)指向待處理數(shù)據(jù)緩沖區(qū),工作線程持有處理數(shù)據(jù)緩沖引用,待處理數(shù)據(jù)提供者持有待處理數(shù)據(jù)緩沖區(qū)弓l用;3)計(jì)算數(shù)據(jù)處理緩沖區(qū)中的數(shù)據(jù)量與工作線程之比E,如E大于V,則轉(zhuǎn)向8),否則轉(zhuǎn)向4),其中V為用戶定義的閾值;4)工作線程處理數(shù)據(jù)處理緩沖區(qū)中的電子產(chǎn)品碼數(shù)據(jù),數(shù)據(jù)提供者將電子產(chǎn)品碼數(shù)據(jù)放入待處理數(shù)據(jù)緩沖區(qū),當(dāng)數(shù)據(jù)處理緩沖區(qū)中的電子產(chǎn)品碼數(shù)據(jù)被工作線程處理完后,轉(zhuǎn)向5;5)系統(tǒng)交換兩個(gè)引用的值使工作線程持有引用的值指向原先的待處理數(shù)據(jù)緩沖區(qū);數(shù)據(jù)提供者持有引用的值指向原先的數(shù)據(jù)處理緩沖區(qū),如工作線程引用的當(dāng)前值指向的緩沖區(qū)含有數(shù)據(jù),則轉(zhuǎn)向3),否則轉(zhuǎn)向6);6)系統(tǒng)周期性的檢查待處理數(shù)據(jù)緩沖區(qū)是否為空,周期長度為用戶配置的周期長度,若有數(shù)據(jù)進(jìn)入則轉(zhuǎn)向5),若輪詢次數(shù)達(dá)到N時(shí),N用戶配置的值,且空閑工作線程數(shù)目大于MIN時(shí),MIN用戶配置的值,則轉(zhuǎn)向7);若輪詢次數(shù)達(dá)到N且空閑工作線程數(shù)目小于等于MIN時(shí),則轉(zhuǎn)向6)。7)按照用戶配置的幅度D減少工作線程數(shù)量,輪詢次數(shù)重置為0,轉(zhuǎn)向6);8)增加一次忙碌計(jì)數(shù)M,M的初始值為0,如M大于等于用戶配置的閥值B且工作線程數(shù)目小于用戶配置的MAX時(shí),轉(zhuǎn)向9);如M大于等于閥值B且工作線程數(shù)數(shù)目大于等于MAX時(shí),轉(zhuǎn)向4);9)按照用戶配置的幅度R增加工作線程數(shù)量,轉(zhuǎn)向4)10)本系統(tǒng)的運(yùn)行行為是無限循環(huán)的伺服行為,當(dāng)系統(tǒng)處于運(yùn)行狀態(tài)時(shí),用戶借由系統(tǒng)外界通過系統(tǒng)提供的接口調(diào)用,向系統(tǒng)發(fā)送停機(jī)指令,系統(tǒng)即檢査工作狀態(tài)、完成必要處理工作、持久化緩存數(shù)據(jù)、回收緩沖、釋放系統(tǒng)資源,從而完成系統(tǒng)的推出,循環(huán)伺服狀態(tài)即告結(jié)束。如圖1,本發(fā)明所要處理的數(shù)據(jù)為電子產(chǎn)品碼,它被裝入當(dāng)前的數(shù)據(jù)入口緩沖區(qū)中,各個(gè)工作線程從當(dāng)前的數(shù)據(jù)處理緩沖區(qū)中提取并處理數(shù)據(jù)。系統(tǒng)中存在兩個(gè)緩沖區(qū)的引用,其引用值是兩個(gè)緩沖區(qū)的地址,它們控制數(shù)據(jù)存取的場所。并且當(dāng)前數(shù)據(jù)處理緩沖區(qū)中無數(shù)據(jù)可以處理時(shí),即交換緩沖區(qū)引用的值,使得可能存在待處理數(shù)據(jù)的另一個(gè)緩沖區(qū)變?yōu)閿?shù)據(jù)處理緩沖區(qū)。圖2描述了數(shù)據(jù)處理流程和狀態(tài)變化情況。1)假設(shè)系統(tǒng)處于狀態(tài)l,即數(shù)據(jù)處理狀態(tài)(工作線程從當(dāng)前數(shù)據(jù)處理緩沖區(qū)中獲取并處理數(shù)據(jù),于此同時(shí)新的待處理的電子產(chǎn)品碼數(shù)據(jù)進(jìn)入數(shù)據(jù)入口緩沖區(qū))。2)如果當(dāng)前處理的數(shù)據(jù)被處理完畢,則通過變遷1轉(zhuǎn)向狀態(tài)2,表示現(xiàn)在交換兩個(gè)引用的值。3)引用值交換完成之后,如果當(dāng)前數(shù)據(jù)處理緩沖區(qū)中存在數(shù)據(jù),則計(jì)算目前緩沖區(qū)中數(shù)據(jù)長度與線程數(shù)目之比E,若E《V(用戶定義的閾值),貝lj轉(zhuǎn)向狀態(tài)l,繼續(xù)處理數(shù)據(jù)。4)若E〉V,則將系統(tǒng)繁忙計(jì)數(shù)增加l,直到系統(tǒng)繁忙次數(shù)為M(用戶定制)時(shí),檢查目前線程組中線程數(shù)目,如果線程數(shù)目己達(dá)到用戶預(yù)定義MAX值,則返回狀態(tài)l,繼續(xù)處理數(shù)據(jù);如果線程數(shù)目沒達(dá)到MAX,則進(jìn)入狀態(tài)9,增加工作線程數(shù)量,繁忙次數(shù)清零,并進(jìn)入狀態(tài)1繼續(xù)處理數(shù)據(jù)。5)引用值交換完成之后,如果當(dāng)前數(shù)據(jù)處理緩沖區(qū)中不存在數(shù)據(jù),則系統(tǒng)開始輪詢數(shù)據(jù)入口緩沖區(qū),若有新數(shù)據(jù)加入則滿足變遷3的要求,進(jìn)入狀態(tài)2;若沒有新數(shù)據(jù)加入,則將系統(tǒng)閑置計(jì)數(shù)增l。在變遷4處,如果系統(tǒng)閑置計(jì)數(shù)<N(用戶預(yù)定值的閾值)且滿足狀態(tài)5(系統(tǒng)空閑線程數(shù)>MIN),則減少空閑的線程數(shù)量,閑置計(jì)數(shù)清零,并回到狀態(tài)3;如果不滿足狀態(tài)5,則直接回到狀態(tài)3。6)圖2中的其它流程見下表2=(S,T)<table>tableseeoriginaldocumentpage9</column></row><table>權(quán)利要求1、一種電子產(chǎn)品標(biāo)簽多線程處理方法,其特征在于1)處理數(shù)據(jù)的線程組使用兩個(gè)線程安全的緩沖區(qū),其中一個(gè)作為工作線程處理數(shù)據(jù)的場所,另一個(gè)接收新的待處理的電子產(chǎn)品碼數(shù)據(jù);2)線程組維護(hù)兩個(gè)緩沖區(qū)的引用,其中一個(gè)指向數(shù)據(jù)處理緩沖區(qū),另一個(gè)指向待處理數(shù)據(jù)緩沖區(qū),工作線程持有處理數(shù)據(jù)緩沖引用,待處理數(shù)據(jù)提供者持有待處理數(shù)據(jù)緩沖區(qū)引用;3)計(jì)算數(shù)據(jù)處理緩沖區(qū)中的數(shù)據(jù)量與工作線程之比E,如E大于V,則轉(zhuǎn)向8),否則轉(zhuǎn)向4),其中V為用戶定義的閾值;4)工作線程處理數(shù)據(jù)處理緩沖區(qū)中的電子產(chǎn)品碼數(shù)據(jù),數(shù)據(jù)提供者將電子產(chǎn)品碼數(shù)據(jù)放入待處理數(shù)據(jù)緩沖區(qū),當(dāng)數(shù)據(jù)處理緩沖區(qū)中的電子產(chǎn)品碼數(shù)據(jù)被工作線程處理完后,轉(zhuǎn)向5;5)系統(tǒng)交換兩個(gè)引用的值使工作線程持有引用的值指向原先的待處理數(shù)據(jù)緩沖區(qū);數(shù)據(jù)提供者持有引用的值指向原先的數(shù)據(jù)處理緩沖區(qū),如工作線程引用的當(dāng)前值指向的緩沖區(qū)含有數(shù)據(jù),則轉(zhuǎn)向3),否則轉(zhuǎn)向6);6)系統(tǒng)周期性的檢查待處理數(shù)據(jù)緩沖區(qū)是否為空,周期長度為用戶配置的周期長度,若有數(shù)據(jù)進(jìn)入則轉(zhuǎn)向5),若輪詢次數(shù)達(dá)到N時(shí),N用戶配置的值,且空閑工作線程數(shù)目大于MIN時(shí),MIN用戶配置的值,則轉(zhuǎn)向7);若輪詢次數(shù)達(dá)到N且空閑工作線程數(shù)目小于等于MIN時(shí),則轉(zhuǎn)向6)。7)按照用戶配置的幅度D減少工作線程數(shù)量,輪詢次數(shù)重置為0,轉(zhuǎn)向6);8)增加一次忙碌計(jì)數(shù)M,M的初始值為0,如M大于等于用戶配置的閥值B且工作線程數(shù)目小于用戶配置的MAX時(shí),轉(zhuǎn)向9);如M大于等于閥值B且工作線程數(shù)數(shù)目大于等于MAX時(shí),轉(zhuǎn)向4);9)按照用戶配置的幅度R增加工作線程數(shù)量,轉(zhuǎn)向4)10)本系統(tǒng)的運(yùn)行行為是無限循環(huán)的伺服行為,當(dāng)系統(tǒng)處于運(yùn)行狀態(tài)時(shí),用戶借由系統(tǒng)外界通過系統(tǒng)提供的接口調(diào)用,向系統(tǒng)發(fā)送停機(jī)指令,系統(tǒng)即檢查工作狀態(tài)、完成必要處理工作、持久化緩存數(shù)據(jù)、回收緩沖、釋放系統(tǒng)資源,從而完成系統(tǒng)的推出,循環(huán)伺服狀態(tài)即告結(jié)束。全文摘要一種電子產(chǎn)品標(biāo)簽多線程處理方法,使用自動(dòng)控制工作線程數(shù)量的雙緩沖線程組對(duì)電子產(chǎn)品碼數(shù)據(jù)進(jìn)行處理系統(tǒng)負(fù)載重時(shí),線程組自動(dòng)增加工作線程數(shù)量,當(dāng)系統(tǒng)負(fù)載輕時(shí),線程組自動(dòng)減少工作線程數(shù)量,所有處理數(shù)據(jù)的工作線程使用一個(gè)緩沖區(qū)處理數(shù)據(jù)的同時(shí),使用另一個(gè)緩沖區(qū)接收新數(shù)據(jù),分離對(duì)同一緩沖區(qū)的讀寫操作,減輕了線程同步的消耗。同時(shí),存在兩個(gè)分別指向處理數(shù)據(jù)緩沖區(qū)和待處理數(shù)據(jù)緩沖區(qū)的引用,各工作線程持有前者,新數(shù)據(jù)提供者持有后者,在數(shù)據(jù)處理緩沖區(qū)為空時(shí),交換緩沖區(qū)引用,使得系統(tǒng)繼續(xù)處理和接收數(shù)據(jù)。通過可伸縮的雙緩沖線程組,避免了工作線程對(duì)同一緩沖區(qū)的讀寫同步,降低系統(tǒng)額外消耗,提升系統(tǒng)對(duì)電子產(chǎn)品碼的處理能力。文檔編號(hào)G06K17/00GK101403980SQ20081023224公開日2009年4月8日申請(qǐng)日期2008年11月12日優(yōu)先權(quán)日2008年11月12日發(fā)明者迪侯,曹曉琦,磊楊,范海軍,勇齊申請(qǐng)人:西安交通大學(xué)