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