資源管理系統(tǒng)及方法
【技術領域】
[0001]本發(fā)明涉及一種資源管理系統(tǒng)及方法,特別是涉及一種通過令牌機制來管理和分配資源的資源管理系統(tǒng)及方法。
【背景技術】
[0002]現(xiàn)有的資源管理方法,比如線程池的管理,是直接啟動一個線程,交由線程池來管理,當需要使用的時候,從線程池中通過競爭的手段來獲得一個線程,如果沒有可用的線程,會啟動一個新的線程。同時還要關心線程的工作情況、工作內(nèi)容等,屬于偏重量級的管理方式。當并發(fā)的數(shù)量較多的時候,由于多線程的復雜性,導致管理程序的難度陡然上升。同時,許多設計在工作任務分配的策略上使用的是等待或不等待結(jié)果二選一的方式,不等待結(jié)果的方式,可以做到后臺工作與前臺工作完全隔離,互不影響,但卻無法方便的獲悉工作結(jié)果;等待結(jié)果的方式,會使得前后臺在某處堵塞,然后工作場景往往需要兩種模式結(jié)入口 ο
【發(fā)明內(nèi)容】
[0003]本發(fā)明要解決的技術問題是為了克服現(xiàn)有技術中在資源管理和結(jié)果可等待方面存在不足的缺陷,提供一種資源管理系統(tǒng)及方法。
[0004]本發(fā)明是通過下述技術方案來解決上述技術問題的:
[0005]本發(fā)明提供了一種資源管理系統(tǒng),其特點在于,包括:
[0006]令牌生成模塊,用于生成線程訪問令牌;
[0007]令牌隊列,用于存儲所述線程訪問令牌;
[0008]令牌分發(fā)模塊,用于在接收到一線程對象發(fā)送的請求指令時,從所述令牌隊列中獲取線程訪問令牌,并將獲取的線程訪問令牌發(fā)送至所述線程對象;
[0009]資源創(chuàng)建模塊,用于在所述線程對象接收到所述線程訪問令牌后,為所述線程對象創(chuàng)建對應的資源;
[0010]資源析構模塊,用于在所述線程對象使用完畢所述資源后,釋放并銷毀所述資源,并控制所述線程訪問令牌返回所述令牌隊列。
[0011]較佳地,所述資源管理系統(tǒng)還包括第一判斷模塊,用于判斷所述令牌隊列中是否具有空閑的線程訪問令牌,若是,則調(diào)用所述令牌分發(fā)模塊,若否,則在一預設時間段內(nèi)繼續(xù)判斷,在判斷為是時調(diào)用所述令牌分發(fā)模塊,在判斷為否時停止操作。
[0012]佳佳地,所述資源管理系統(tǒng)還包括第二判斷模塊,用于判斷是否需要同步句柄,若是,則返回所述線程對象的句柄,并在所述線程對象使用完畢所述資源后返回所述線程對象的運行結(jié)果,若否,則直接調(diào)用所述資源析構模塊。
[0013]較佳地,所述線程訪問令牌為數(shù)字、字符、符號或?qū)ο蟆?br>[0014]較佳地,所述令牌隊列存儲的線程訪問令牌的數(shù)量具有一最大閾值。
[0015]本發(fā)明的目的在于還提供了一種資源管理方法,其特點在于,其利用上述的資源管理系統(tǒng)實現(xiàn),所述資源管理方法包括以下步驟:
[0016]S1、所述令牌生成模塊生成線程訪問令牌;
[0017]S2、所述令牌隊列存儲所述線程訪問令牌;
[0018]S3、所述令牌分發(fā)模塊在接收到一線程對象發(fā)送的請求指令時,從所述令牌隊列中獲取線程訪問令牌,并將獲取的線程訪問令牌發(fā)送至所述線程對象;
[0019]S4、所述資源創(chuàng)建模塊在所述線程對象接收到所述線程訪問令牌后,為所述線程對象創(chuàng)建對應的資源;
[0020]S5、所述資源析構模塊在所述線程對象使用完畢所述資源后,釋放并銷毀所述資源,并控制所述線程訪問令牌返回所述令牌隊列。
[0021]較佳地,所述資源管理系統(tǒng)還包括第一判斷模塊,所述資源管理方法在步驟$和S3之間還包括:
[0022]S21、所述第一判斷模塊判斷所述令牌隊列中是否具有空閑的線程訪問令牌,若是,則執(zhí)行步驟S3,若否,則在一預設時間段內(nèi)繼續(xù)判斷,在判斷為是時執(zhí)行步驟S3,在判斷為否時結(jié)束流程。
[0023]較佳地,所述資源管理系統(tǒng)還包括第二判斷模塊,所述資源管理方法在步驟&和S5之間還包括:
[0024]S41、所述第二判斷模塊判斷是否需要同步句柄,若是,則返回所述線程對象的句柄,并在所述線程對象使用完畢所述資源后返回所述線程對象的運行結(jié)果,若否,則執(zhí)行步驟s5。
[0025]較佳地,所述線程訪問令牌為數(shù)字、字符、符號或?qū)ο蟆?br>[0026]較佳地,所述令牌隊列存儲的線程訪問令牌的數(shù)量具有一最大閾值。
[0027]本發(fā)明的積極進步效果在于:本發(fā)明采用令牌機制進行資源管理,無需資源管理器的介入,從而減輕了資源管理的負擔,提高了資源管理的效率,減低了復雜度,適用于各種復雜的情況,使得資源的分配、創(chuàng)建、使用、結(jié)果和銷毀的過程變得更貼近使用者,同時也將資源管理器的職責專注于分配和回收的方式而非具體內(nèi)容,簡化了資源管理器的操作。
【附圖說明】
[0028]圖1為本發(fā)明的一較佳實施例的資源管理系統(tǒng)的模塊示意圖。
[0029]圖2為本發(fā)明的一較佳實施例的資源管理方法的流程圖。
【具體實施方式】
[0030]下面通過實施例的方式進一步說明本發(fā)明,但并不因此將本發(fā)明限制在所述的實施例范圍之中。
[0031]如圖1所示,本發(fā)明的資源管理系統(tǒng)包括令牌生成模塊1、令牌隊列2、令牌分發(fā)模塊3、資源創(chuàng)建模塊4、資源析構模塊5、第一判斷模塊6以及第二判斷模塊7。
[0032]其中,所述令牌生成模塊1用于生成線程訪問令牌,所述令牌隊列2用于存儲所述線程訪問令牌,所述第一判斷模塊6則用于判斷所述令牌隊列2中是否具有空閑的線程訪問令牌,若是,則調(diào)用所述令牌分發(fā)模塊3,若否,則在一預設時間段內(nèi)繼續(xù)進行判斷,即在所述預設時間段內(nèi)繼續(xù)等待,在判斷為是時則表明在所述預設時間段內(nèi)所述令牌隊列2中出現(xiàn)空閑的線程訪問令牌,此時就調(diào)用所述令牌分發(fā)模塊3,在判斷為否時則表明在所述預設時間段內(nèi)所述令牌隊列2中依然沒有出現(xiàn)空閑的線程訪問令牌,此時就停止操作。
[0033]所述令牌分發(fā)模塊3在接收到一線程對象發(fā)送的請求指令時,從所述令牌隊列2中獲取線程訪問令牌,并將獲取的線程訪問令牌發(fā)送至所述線程對象;所述資源創(chuàng)建模塊4用于在所述線程對象接收到所述線程訪問令牌后,為所述線程對象創(chuàng)建對應的資源;
[0034]所述第二判斷模塊7則判斷是否需要同步句柄,若是,則返回所述線程對象的句柄,并在所述線程對象使用完畢所述資源后返回所述線程對象的運行結(jié)果,若否,則直接調(diào)用所述資源析構模塊5 ;所述資源析構模塊5則用于在所述線程對象使用完畢所述資源后,釋放并銷毀所述資源,從而完成對所述資源的析構,并控制所述線程訪問令牌返回所述令牌隊列2中。
[0035]本發(fā)明提供了一種用于資源分配和使用的輕量級管理系統(tǒng),特別是針對開閉代價較高的資源,如進程、線程等。
[0036]在本發(fā)明的具體實施過程中,所述令牌隊列2用于通過其中存儲的線程訪問令牌管理和索引資源,并決定資源的可用性,所述資源創(chuàng)建模塊4用于產(chǎn)生資源,所述資源析構模塊5則用于回收資源,所述第二判斷模塊7用于在必要的時候讓前后臺工作同步。
[0037]其中,所述線程訪問令牌由隨機的符號表示,其自身與資源無直接關系,所述線程訪問令牌可以由數(shù)字、字符、符號甚至對象來表示,所述線程訪問令牌被填充在所述令牌隊列2中,就像用于索引和管理資源的門票。