專利名稱:一種基于緩存的圖標讀取方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種基于緩存的圖標讀取方法,屬于計算機技術(shù)領(lǐng)域。
背景技術(shù):
在圖像/視頻處理軟件中,工程瀏覽器主要用于對工程中的所有序列、流程圖和素材進行管理,在這個視窗中可以導入素材并顯示素材的基本信息;圖標是表征素材基本信息的最直觀方式。CN1801061公開了一種手持式數(shù)據(jù)處理裝置的動態(tài)顯示功能選單圖標的系統(tǒng)及其方法。其具備一圖標組緩存單元,用以暫存選定的功能選單圖標組;及一圖標數(shù)據(jù)顯像單元,自該功能選單圖標組緩存單元中讀取,并顯示該選定的功能選單圖標組。然而,其僅公開了圖標組緩存單元的功能,并未涉及基于緩存的圖標讀取的具體過程,并不是一種高效率的讀取圖標機制。在圖標數(shù)量龐大的系統(tǒng)(例如圖文編輯包裝系統(tǒng))中圖標讀取的效率,影響著用戶對系統(tǒng)的評價程度。因此,如何快速、高效、實時地讀取圖標是諸如圖文編輯包裝系統(tǒng)的一個急需解決的問題。
發(fā)明內(nèi)容
針對現(xiàn)有技術(shù)中所存在的缺陷,本發(fā)明的目的就是提供一種高效率的基于緩存的圖標讀取方法。為了實現(xiàn)上述發(fā)明目的,本發(fā)明所采用的技術(shù)方案如下—種基于緩存的圖標讀取方法,包括步驟B,查詢緩存中是否存在目標任務(wù),若存在,則直接返回目標任務(wù);步驟C,若不存在,查詢Finished存儲器中是否存在此目標任務(wù); 若存在直接返回此任務(wù);若不存在,則進行實時的目標任務(wù)讀取工作;所述Finished存儲器用來存放已經(jīng)完成但是放入緩存存儲器中的目標任務(wù)。本發(fā)明同時還提供另一種基于緩存的圖標讀取方法,包括步驟1,讀取緩存中已經(jīng)生成過的圖標;步驟2,讀取已經(jīng)生成但是未緩存的圖標;步驟3,讀取目標任務(wù)所需要的圖標;步驟4,重新載入目標任務(wù)所需圖標。所述緩存是一個以Key為索引,Task為值的緩存cache ;生成的圖標按照使用的時間順序依次存放。進一步,在上述步驟1中,為每一個目標任務(wù)設(shè)置一個索引Key和一個任務(wù)值 Task;定義一個存儲目標圖標的對象,記錄下所要讀取的目標圖標的索引Key,所述索引包括圖標的基本邏輯信息,圖標的寬度,高度等;在緩存cache中查找是否有對應的索引與所述目標圖標的索引相對應;若緩存cache中存在此索引,則直接讀取緩存cache中該索引所對應的圖標。更進一步,所述步驟2進一步包括分別建立以Key為索引,Task為值的finished 和pending的兩個存儲器,即,F(xiàn)inished存儲器和Pending存儲器,F(xiàn)inished存儲器用來存放已經(jīng)完成但是未往緩存存儲器中存放的圖標;若在Finished存儲器里未查詢到目標任務(wù)所需要的圖標,即目標圖標的對象索引所對應的目標圖標;則將此次圖標的讀取任務(wù)的索引及任務(wù)本身添加到Pending存儲器中,并響應線程的notify機制,告之讀取線程,已有新的任務(wù)添加。所述步驟3進一步包括在未得到任務(wù)之前,線程處于wait狀態(tài),一旦收到任務(wù)響應,則線程開始讀?。贿M一步,定義一個存儲圖標的對象img,img中包括了圖標的高度,寬度,位深度,每行所占用的字節(jié)數(shù)等信息,圖標讀取完成后將img對象返回給所需要的目標任務(wù),并將任務(wù)的Key、task存入Finished存儲器;當讀圖標的線程的時鐘到達時,把任務(wù)的Key、task存入緩存cache。所述步驟4進一步包括定義一個響應事件,用于通知線程的暫停與開始,通知過程中,暫停讀取圖標的線程,清理緩存cache、Finished存儲器以及Pending存儲器中的相關(guān)記錄;清理完畢后,重新按照步驟3讀取圖標。本發(fā)明的效果在于采用本發(fā)明所述的方法,在圖像/視頻處理過程中能夠提高讀取圖標的效率,保證讀取的實時性。
圖1為本發(fā)明基于緩存的圖標讀取方法的流程示意圖。
具體實施例方式下面結(jié)合附圖和具體實施方式
對本發(fā)明作進一步描述。了解決本發(fā)明的技術(shù)問題,本發(fā)明提供了以下技術(shù)方案。本發(fā)明采用多線程異步讀取機制,并采用緩存機制,快速有效的生成圖標。在本發(fā)明優(yōu)選的實施方式中,如圖1所示,圖1為本發(fā)明基于緩存的圖標讀取方法的流程示意圖。 基于緩存的圖標讀取方法包括以下步驟步驟A,用戶分配讀取圖標的任務(wù);步驟B,查詢緩存中是否存在目標任務(wù),若存在直接返回目標任務(wù);步驟C,若不存在,查詢已經(jīng)完成但是未來得及放入緩存的存儲器中是否存在此目標任務(wù);若存在直接返回此任務(wù);步驟D,若已經(jīng)完成但是未來得及放入緩存的存儲器中不存在此目標任務(wù),則將任務(wù)的索引以及任務(wù)本身存入Pending存儲器,并啟用讀取圖標的線程;步驟E,讀取圖標的線程執(zhí)行讀取圖標的任務(wù),任務(wù)完成后,將讀取的圖標索引以及任務(wù)存入緩存、Finished存儲器;并返回任務(wù)。在一個更為精細的實施方式中,基于緩存的圖標讀取方法進一步包括以下步驟1.讀取緩存中已經(jīng)生成過的圖標。為每一個目標任務(wù)(Task)設(shè)置一個索引和一個任務(wù)值。定義一個對象,記錄下所要讀取的目標圖標的Key (索引),包括圖標的基本邏輯信息,圖標的寬度,高度等。在緩存(cache)中查找是否有對應的Key與目標所給的Key相對應。若cache存儲器中存在此 Key,則直接讀取cache存儲器中所存儲的圖標。在該實施方式中,cache存儲器是一個以 Key為索引,Task為值的緩存存儲器;生成的圖標按照使用的時間順序依次存放。2.讀取已經(jīng)生成但是未緩存的圖標。
建立一個以Key為索弓丨,Task為值的Finished存儲器和Pending存儲器, Finished存儲器用來存放已經(jīng)完成但是未往緩存存儲器中存放的圖標;這個過程中,為了線程的安全性,需要給線程加鎖;讀取的方式同步驟1。若Finished存儲器里未查詢到目標任務(wù)所需要的圖標;則將此次圖標的讀取任務(wù)的索引及任務(wù)本身添加到Pending存儲器中,并響應線程的notify機制,告之讀取線程,已有新的任務(wù)添加。3.讀取目標任務(wù)所需要的圖標。為了最快的讀取到圖標,讀取圖標的過程為一個實時的,不斷循環(huán)的過程,因此單獨開辟了讀取圖標的線程。在未得到任務(wù)之前,線程處于wait狀態(tài),線程一旦收到任務(wù)響應,則表示有新任務(wù)添加進來,開始讀取;進一步,定義一個存儲圖標的對象img,img中包括了圖標的高度,寬度,位深度,每行所占用的字節(jié)數(shù)等信息,圖標讀取完成后將img對象返回給所需要的目標任務(wù),并將任務(wù)的Key、taSk存入Finished存儲器;當讀圖標的線程的時鐘到達時,把任務(wù)的Key、task存入cache存儲器。4.重新載入目標任務(wù)所需圖標。在處理圖像過程中,對于已經(jīng)導入的圖像,用戶隨時可能用其他軟件對原圖像進行加工、處理;重新關(guān)聯(lián)時,圖像的圖標也要相應的發(fā)生改變。這個過程中可以定義另外一個響應事件,用于通知線程的暫停與開始,此過程中,暫停讀取圖標的線程,清理cache存儲器、Finished存儲器以及Pending存儲器中的相關(guān)記錄;清理完畢后,重新按照步驟3讀取圖標。本發(fā)明帶來了以下技術(shù)效果利用緩存機制,提高了讀取圖標的效率。并且利用多線程,異步讀取圖標,保證了讀取的實時性。本發(fā)明所述的方法和系統(tǒng)并不限于具體實施方式
中所述的實施例,本領(lǐng)域技術(shù)人員根據(jù)本發(fā)明的技術(shù)方案得出其他的實施方式,同樣屬于本發(fā)明的技術(shù)創(chuàng)新范圍。
權(quán)利要求
1.一種基于緩存的圖標讀取方法,其特征在于,包括以下步驟步驟B,查詢緩存中是否存在目標任務(wù),若存在,則直接返回目標任務(wù);步驟C,若不存在,查詢已經(jīng)完成但是未來得及放入緩存的存儲器中是否存在此目標任務(wù);若存在直接返回此任務(wù);若不存在,則進行實時的目標任務(wù)讀取工作。
2.一種如權(quán)利要求1所述的基于緩存的圖標讀取方法,其特征在于在所述步驟B之前還包括步驟A,用戶分配讀取圖標的任務(wù)。
3.—種如權(quán)利要求2所述的基于緩存的圖標讀取方法,其特征在于在所述步驟C之后還包括步驟D,若已經(jīng)完成但是未來得及放入緩存的存儲器中不存在此目標任務(wù),則將任務(wù)的索引以及任務(wù)本身存入Pending存儲器,并啟用讀取圖標的線程;步驟E,讀取圖標的線程執(zhí)行讀取圖標的任務(wù),任務(wù)完成后,將讀取的圖標索引以及任務(wù)存入緩存、Finished存儲器;并返回任務(wù)。
4.一種基于緩存的圖標讀取方法,其特征在于,包括以下步驟步驟1,讀取緩存中已經(jīng)生成過的圖標;步驟2,讀取已經(jīng)生成但是未緩存的圖標;步驟3,讀取目標任務(wù)所需要的圖標;步驟4,重新載入目標任務(wù)所需圖標。
5.一種如權(quán)利要求4所述的基于緩存的圖標讀取方法,其特征在于所述緩存是一個以Key為索引,Task為值的緩存cache ;生成的圖標按照使用的時間順序依次存放。
6.一種如權(quán)利要求5所述的基于緩存的圖標讀取方法,其特征在于,所述步驟1進一步包括為每一個目標任務(wù)設(shè)置一個索引Key和一個任務(wù)值Task ;定義一個存儲目標圖標的對象,記錄下所要讀取的目標圖標的索引Key,所述索引包括圖標的基本邏輯信息,圖標的寬度,高度;在緩存cache中查找是否有對應的索引與所述目標圖標的索引相對應;若緩存cache中存在此索引,則直接讀取緩存cache中該索引所對應的圖標。
7.—種如權(quán)利要求6所述的基于緩存的圖標讀取方法,其特征在于,所述步驟2進一步包括分別建立以Key為索引,Task為值的finished和pending的兩個存儲器,S卩,F(xiàn)inished 存儲器和Pending存儲器,F(xiàn)inished存儲器用來存放已經(jīng)完成但是未往緩存存儲器中存放的圖標;若在Finished存儲器里未查詢到目標任務(wù)所需要的圖標,即目標圖標的對象索引所對應的目標圖標;則將此次圖標的讀取任務(wù)的索引及任務(wù)本身添加到Pending存儲器中,并響應線程的notify機制,告之讀取線程,已有新的任務(wù)添加。
8.—種如權(quán)利要求7所述的基于緩存的圖標讀取方法,其特征在于,所述步驟3進一步包括在未得到任務(wù)之前,線程處于wait狀態(tài),一旦收到任務(wù)響應,則線程開始讀??;進一步,定義一個存儲圖標的對象img,img中包括了圖標的高度,寬度,位深度,每行所占用的字節(jié)數(shù)信息,圖標讀取完成后將img對象返回給所需要的目標任務(wù),并將任務(wù)的Key、task存入Finished存儲器;當讀圖標的線程的時鐘到達時,把任務(wù)的Key、task存入緩存 cache ο
9. 一種如權(quán)利要求8所述的基于緩存的圖標讀取方法,其特征在于,所述步驟4進一步包括定義一個響應事件,用于通知線程的暫停與開始,通知過程中,暫停讀取圖標的線程, 清理緩存cache、Finished存儲器以及Pending存儲器中的相關(guān)記錄;清理完畢后,重新按照步驟3讀取圖標。
全文摘要
本發(fā)明提供一種基于緩存的圖標讀取方法,在該方法中,查詢緩存中是否存在目標任務(wù),若存在,則直接返回目標任務(wù);若不存在,查詢已經(jīng)完成但是未來得及放入緩存的存儲器中是否存在此目標任務(wù);若存在直接返回此任務(wù);若不存在,則進行實時的目標任務(wù)讀取工作。本發(fā)明利用緩存機制,提高了讀取圖標的效率;并且利用多線程,異步讀取圖標,保證了讀取的實時性。
文檔編號G06F9/44GK102566999SQ201010617510
公開日2012年7月11日 申請日期2010年12月31日 優(yōu)先權(quán)日2010年12月31日
發(fā)明者劉鐵華, 見良, 許小飛, 鄭鵬程 申請人:新奧特(北京)視頻技術(shù)有限公司