本申請涉及互聯(lián)網(wǎng)技術領域,尤其涉及一種資源申請、釋放方法及裝置。
背景技術:
伴隨著互聯(lián)網(wǎng)規(guī)模的不斷壯大,互聯(lián)網(wǎng)軟件需要處理的網(wǎng)絡事件也隨之劇增。為了加快網(wǎng)絡事件的處理效率,互聯(lián)網(wǎng)軟件可以并行處理多個網(wǎng)絡事件。在并行處理網(wǎng)絡事件的過程中,互聯(lián)網(wǎng)軟件可以根據(jù)網(wǎng)絡事件操作一些資源,因為并行的網(wǎng)絡事件很多,所以各個網(wǎng)絡事件所要操作的資源可能出現(xiàn)資源沖突。
例如,在互聯(lián)網(wǎng)軟件執(zhí)行路由的創(chuàng)建刪除操作過程中,與網(wǎng)絡事件A對應的任務線程A希望目的IP為IPx的報文從網(wǎng)口A發(fā)送出去;而與網(wǎng)絡事件B對應的任務線程B則希望處理目的IP為IPx的報文從網(wǎng)口B發(fā)送出去。目的IP為IPx的報文在同一時間只能從一個網(wǎng)口發(fā)送出去,因此網(wǎng)絡事件A和網(wǎng)絡事件B在處理目的IP為IPx的報文時,則會產(chǎn)生資源沖突。
為此,在互聯(lián)網(wǎng)軟件上增加資源調度方法來調度資源,以便避免多個網(wǎng)絡事件的任務線程產(chǎn)生資源沖突。目前,資源調度方法的具體執(zhí)行過程可以為:對互聯(lián)網(wǎng)的所有資源進行分類,并且每類資源對應一個信號量;例如,路由類資源對應路由操作信號量,網(wǎng)口類資源對應網(wǎng)口類操作信號量,USB類資源對應USB操作信號量等。
現(xiàn)有的資源調度方法的大體執(zhí)行過程為:當網(wǎng)絡事件A的任務線程A需要操作A類資源時,需要等待A類資源的信號量A。在前一網(wǎng)絡事件的任務線程操作結束后,網(wǎng)絡事件A的任務線程A則可以獲得A類資源的信號量A,從而利用A類資源執(zhí)行其任務。在現(xiàn)有的資源調度方法中,由于同類資源在同一時間只有一個任務線程在使用,因此使用現(xiàn)有方式可以解決資源沖突的問題。
參見圖1,以路由類資源為例,對現(xiàn)有的資源調度方法進行詳細說明。假設與n個網(wǎng)絡事件一一對應的有T1、T2……Tn共n個任務線程,n個任務線程均需要操作路由類資源。此時,為了避免資源沖突,在一個時刻只能有一 個任務線程使用路由類資源。即,在t1時刻T1任務線程占用路由操作信號量,可以使用路由類資源,T2、T3……Tn任務線程執(zhí)行等待操作;在t2時刻T2任務線程占用路由操作信號量,可以使用路由類資源,T3,T4……Tn任務線程執(zhí)行等待操作;按順序依次執(zhí)行,直到tn時刻Tn任務線程占用路由操作信號量,可以使用路由類資源。
技術實現(xiàn)要素:
在實際應用中,在每類資源下面具有多個條目。條目的漢語釋義:指按內(nèi)容分列的細目,條理項目;翻譯成英文可以為item。以路由類資源為例,路由類資源可以具有IP1、IP2、IP3……等多個條目;再如,以網(wǎng)口類資源為例,網(wǎng)口類資源可以具有網(wǎng)口1、網(wǎng)口2、網(wǎng)口3……等多個條目。在研究資源調度線程的過程中,本申請發(fā)明人發(fā)現(xiàn),只有在同一時刻使用同類資源的同一條目時,不同的任務線程才會產(chǎn)生資源沖突,在使用同類資源的不同條目時,不同的任務線程不會發(fā)生資源沖突。
例如,T1、T2……Tn共n個任務線程需要操作路由類資源,T1和T2任務線程需要操作條目IP1,T3任務線程需要操作條目IP2,T4任務線程需要操作條目TP3,依次類推,Tn任務線程需要操作條目IPx。由于T1和T2任務線程需要操作同一條目IP1,所以在同時執(zhí)行時會發(fā)生資源沖突;但是,T1、T3、T4……Tn任務線程均操作不同的條目,因此T1、T3、T4……Tn任務線程在同時執(zhí)行時,不會產(chǎn)生資源沖突。即,不同的任務線程在同一時刻操作同一條目時才會產(chǎn)生資源沖突,在操作不同條目時不會產(chǎn)生資源沖突。
現(xiàn)有技術中只要多個任務線程操作同類資源則確認其會產(chǎn)生資源沖突,但是,實際上只有在多個任務線程操作同類資源的同一條目時,才會產(chǎn)生資源沖突。因此,現(xiàn)有技術中資源調度方法對資源沖突的控制方式過于粗放,不能精細到具體條目的層面進行控制,這導致排列靠后的任務線程進行大量的不必要的等待,進而降低任務線程處理效率。同時,現(xiàn)有的資源調度方法需要為每類資源創(chuàng)建信號量,創(chuàng)建信號量需要較多的步驟,因此其處理過程較為繁瑣。
因此,現(xiàn)在需要一種新的資源調度方法,以便簡單、高效地提成任務線程的執(zhí)行效率。
為了實現(xiàn)上述目的,本申請采用以下技術手段:
一種資源申請方法,包括:
接收目標任務線程發(fā)送的資源申請請求;其中,所述資源申請請求包括操作請求消息,所述操作請求消息包括目標資源類別和所述目標資源類別下的目標條目關鍵詞;
若在與所述目標資源類別對應的條目占用記錄集合中,未查找到與所述目標條目關鍵詞對應的占用記錄,則確認所述目標任務線程的所述資源申請請求;
向所述目標任務線程反饋所述資源申請請求的確認結果。
優(yōu)選的,在確認所述目標任務線程所述資源申請請求之后,還包括:
在與所述目標資源類別對應的條目占用記錄集合中,創(chuàng)建與所述目標條目關鍵詞對應的占用記錄。
優(yōu)選的,在所述資源申請請求還包括目標任務線程的目標標識,在確認所述目標任務線程所述資源申請請求之后,還包括:
在與所述目標資源類別對應的條目占用記錄集合中,創(chuàng)建與所述目標條目關鍵詞和所述目標標識對應的占用記錄。
優(yōu)選的,還包括:
若在與所述目標資源類別對應的條目占用記錄集合中,查找到與所述目標條目關鍵詞對應的占用記錄,則否認所述目標任務線程的所述資源申請請求;
向所述目標任務線程反饋所述資源申請請求的否認結果。
優(yōu)選的,所述資源申請請求還包括第一位置指針,所述第一位置指針用于指向所述操作請求消息中申請結果的存儲位置;
則向所述目標任務線程反饋所述資源申請請求的確認結果,具體包括:向所述第一位置指針指向的所述申請結果的存儲位置中寫入確認結果;
則向所述目標任務線程反饋所述資源申請請求的否認結果,具體包括:向所述第一位置指針指向的所述申請結果的存儲位置中寫入否認結果。
優(yōu)選的,還包括:
重新接收所述目標任務線程發(fā)送的所述資源申請請求。
一種資源申請方法,包括:
創(chuàng)建操作請求消息;其中,所述操作請求消息包括目標資源類別和所述目標資源類別下的目標條目關鍵詞;
向資源調度線程發(fā)送資源申請請求;其中,所述資源申請請求包括所述操作請求消息;
接收所述資源調度線程反饋的所述資源申請請求的確認結果;其中,所述確認結果為,所述資源調度線程利用在與所述目標資源類別對應的條目占用記錄集合中未查找到與所述目標條目關鍵詞對應的占用記錄的方式,確認所述目標任務線程所述資源申請請求后,向所述目標任務線程發(fā)送的。
優(yōu)選的,還包括:
接收所述資源調度線程反饋的所述資源申請請求的否認結果;其中,所述否認結果為,所述資源調度線程利用在與所述目標資源類別對應的條目占用記錄集合中查找到與所述目標條目關鍵詞對應的占用記錄的方式,否認所述目標任務線程所述資源申請請求后,向所述目標任務線程發(fā)送的。
優(yōu)選的,所述資源申請請求還包括第一位置指針,所述第一位置指針用于指向所述操作請求消息中申請結果的存儲位置;
則所述接收所述資源調度線程反饋的所述資源申請請求的確認結果,包括:接收所述資源調度線程向所述第一位置指針指向的所述申請結果的存儲位置中寫入的確認結果;
則所述接收所述資源調度線程反饋的所述資源申請請求的否認結果,包括:接收所述資源調度線程向所述第一位置指針指向的所述申請結果的存儲位置中寫入的否認結果。
優(yōu)選的,在所述接收所述資源調度線程反饋的所述資源申請請求的否認結果之后,還包括:
在延遲預設時間后,重新向所述資源調度線程發(fā)送所述資源申請請求;
若接收到所述資源調度線程反饋的否認結果之后,重復執(zhí)行在延遲預設時間后重新向所述資源調度線程發(fā)送所述資源申請請求的步驟,直到接收到所述資源調度線程反饋的確認結果。
優(yōu)選的,所述資源申請請求還包括目標任務線程的目標標識。
一種資源釋放方法,包括:
接收目標任務線程發(fā)送的資源釋放請求;其中,所述資源釋放請求包括操作釋放消息,所述操作釋放消息包括所述目標資源類別和所述目標條目關鍵詞;
在與所述目標資源類別對應的條目占用記錄集合中,刪除與所述目標條目關鍵詞對應的占用記錄;
向所述目標任務線程反饋所述資源釋放請求的確認結果。
優(yōu)選的,所述資源釋放請求還包括第二位置指針,所述第二位置指針用于指向所述操作釋放消息中釋放結果的存儲位置;
則向所述目標任務線程反饋所述資源釋放請求的確認結果具體包括:向所述第二位置指針指向的所述釋放結果的存儲位置中寫入確認結果。
優(yōu)選的,所述資源釋放請求還包括所述目標任務線程的目標標識;
在預設時間內(nèi)未接收到所述目標任務線程發(fā)送的資源釋放請求,則查看所述目標任務線程是否處于正常狀態(tài);
若所述目標任務線程未處于正常狀態(tài),則刪除與所述目標標識對應的所有占用記錄。
優(yōu)選的,還包括:
向所述目標任務線程發(fā)送資源是否使用完畢的詢問請求;
若所述目標任務線程的資源使用完畢,則接收所述目標任務線程發(fā)送的已使用完畢的資源類別和條目關鍵詞;
在與所述目標資源類別對應的條目占用記錄集合中,刪除與所述目標條目關鍵詞對應的占用記錄。
一種資源釋放方法,包括:
創(chuàng)建操作釋放消息;其中,所述操作釋放消息包括目標資源類別和所述目標條目關鍵詞;
向所述資源調度線程發(fā)送資源釋放請求;其中,所述資源釋放請求包括操作釋放消息;
接收所述資源調度線程反饋的所述資源釋放請求的確認結果。
優(yōu)選的,所述資源釋放請求還包括第二位置指針,所述第二位置指針用于指向所述操作釋放消息中的釋放結果的存儲位置;
則所述接收所述資源調度線程反饋的所述資源申請請求的確認結果,包括:接收所述資源調度線程向所述第二位置指針指向的所述釋放結果的存儲位置中寫入的確認結果。
優(yōu)選的,所述資源釋放請求還包括所述目標任務線程的目標標識。
優(yōu)選的,還包括:
接收所述資源調度線程發(fā)送的資源是否使用完畢的詢問請求;
若資源使用完畢,則向所述資源調度線程發(fā)送已使用完畢的資源類別和條目關鍵詞。
一種資源申請裝置,包括:
第一接收單元,用于接收目標任務線程發(fā)送的資源申請請求;其中,所述資源申請請求包括操作請求消息,所述操作請求消息包括目標資源類別和所述目標資源類別下的目標條目關鍵詞;
第一確認單元,用于若在與所述目標資源類別對應的條目占用記錄集合中,未查找到與所述目標條目關鍵詞對應的占用記錄,則確認所述目標任務線程的所述資源申請請求;
第一反饋確認結果單元,用于向所述目標任務線程反饋所述資源申請請求的確認結果。
優(yōu)選的,還包括:
第一創(chuàng)建記錄單元,用于在與所述目標資源類別對應的條目占用記錄集合中,創(chuàng)建與所述目標條目關鍵詞對應的占用記錄;和/或,
第二創(chuàng)建記錄單元,用于在所述資源申請請求還包括目標任務線程的目標標識的情況下,在與所述目標資源類別對應的條目占用記錄集合中,創(chuàng)建與所述目標條目關鍵詞和所述目標標識對應的占用記錄。
優(yōu)選的,還包括:
否認單元,用于若在與所述目標資源類別對應的條目占用記錄集合中,查找到與所述目標條目關鍵詞對應的占用記錄,則否認所述目標任務線程的所述資源申請請求;
反饋否認結果單元,用于向所述目標任務線程反饋所述資源申請請求的否認結果。
優(yōu)選的,所述資源申請請求還包括第一位置指針,所述第一位置指針用于指向所述操作請求消息中申請結果的存儲位置;
則第一反饋確認結果單元,具體用于:向所述第一位置指針指向的所述申請結果的存儲位置中寫入確認結果;
則反饋否認結果單元,具體用于:向所述第一位置指針指向的所述申請結果的存儲位置中寫入否認結果。
優(yōu)選的,還包括:
所述第一接收單元,還用于重新接收所述目標任務線程發(fā)送的所述資源申請請求。
一種資源申請裝置,包括:
第一創(chuàng)建消息單元,用于創(chuàng)建操作請求消息;其中,所述操作請求消息包括目標資源類別和所述目標資源類別下的目標條目關鍵詞;
第一發(fā)送單元,用于向資源調度線程發(fā)送資源申請請求;其中,所述資源申請請求包括所述操作請求消息;
第一接收確認結果單元,用于接收所述資源調度線程反饋的所述資源申請請求的確認結果;其中,所述確認結果為,所述資源調度線程利用在與所述目標資源類別對應的條目占用記錄集合中未查找到與所述目標條目關鍵詞對應的占用記錄的方式,確認所述目標任務線程所述資源申請請求后,向所述目標任務線程發(fā)送的。
優(yōu)選的,還包括:
接收否認結果單元,用于接收所述資源調度線程反饋的所述資源申請請求的否認結果;其中,所述否認結果為,所述資源調度線程利用在與所述目標資源類別對應的條目占用記錄集合中查找到與所述目標條目關鍵詞對應的占用記錄的方式,否認所述目標任務線程所述資源申請請求后,向所述目標任務線程發(fā)送的。
優(yōu)選的,所述資源申請請求還包括第一位置指針,所述第一位置指針用于指向所述操作請求消息中申請結果的存儲位置;
則所述第一接收確認結果單元,具體用于接收所述資源調度線程向所述第一位置指針指向的所述申請結果的存儲位置中寫入的確認結果;
則所述接收否認結果單元,具體用于接收所述資源調度線程向所述第一位置指針指向的所述申請結果的存儲位置中寫入的否認結果。
優(yōu)選的,還包括:
所述第一發(fā)送單元,還用于在延遲預設時間后,重新向所述資源調度線程發(fā)送所述資源申請請求;
判斷單元,用于若接收到所述資源調度線程反饋的否認結果之后,觸發(fā)所述第一發(fā)送單元重復執(zhí)行在延遲預設時間后重新向所述資源調度線程發(fā)送所述資源申請請求的步驟,直到接收到所述資源調度線程反饋的確認結果。
優(yōu)選的,所述資源申請請求還包括目標任務線程的目標標識。
一種資源釋放裝置,包括:
第二接收單元,用于接收目標任務線程發(fā)送的資源釋放請求;其中,所述資源釋放請求包括操作釋放消息,所述操作釋放消息包括所述目標資源類別和所述目標條目關鍵詞;
刪除記錄單元,用于在與所述目標資源類別對應的條目占用記錄集合中,刪除與所述目標條目關鍵詞對應的占用記錄;
第二反饋確認結果單元,用于向所述目標任務線程反饋所述資源釋放請求的確認結果。
優(yōu)選的,所述資源釋放請求還包括第二位置指針,所述第二位置指針用于指向所述操作釋放消息中釋放結果的存儲位置;
則第二反饋確認結果單元具體用于:向所述第二位置指針指向的所述釋放結果的存儲位置中寫入確認結果。
優(yōu)選的,所述資源釋放請求還包括所述目標任務線程的目標標識;則所述裝置還包括:
查看單元,用于在預設時間內(nèi)未接收到所述目標任務線程發(fā)送的資源釋放請求,則查看所述目標任務線程是否處于正常狀態(tài);
所述刪除記錄單元,還用于若所述目標任務線程未處于正常狀態(tài),則刪除與所述目標標識對應的所有占用記錄。
優(yōu)選的,還包括:
發(fā)送詢問請求單元,用于向所述目標任務線程發(fā)送資源是否使用完畢的詢問請求;
接收資源類別和關鍵詞單元,用于若所述目標任務線程的資源使用完畢,則接收所述目標任務線程發(fā)送的已使用完畢的資源類別和條目關鍵詞;
所述刪除記錄單元,還用于在與所述目標資源類別對應的條目占用記錄集合中,刪除與所述目標條目關鍵詞對應的占用記錄。
一種資源釋放裝置,包括:
第二創(chuàng)建消息單元,用于創(chuàng)建操作釋放消息;其中,所述操作釋放消息包括目標資源類別和所述目標條目關鍵詞;
第二發(fā)送單元,用于向所述資源調度線程發(fā)送資源釋放請求;其中,所述資源釋放請求包括操作釋放消息;
第二接收確認結果單元,用于接收所述資源調度線程反饋的所述資源釋放請求的確認結果。
優(yōu)選的,所述資源釋放請求還包括第二位置指針,所述第二位置指針用于指向所述操作釋放消息中的釋放結果的存儲位置;
則所述第二接收確認結果單元,具體用于接收所述資源調度線程向所述第二位置指針指向的所述釋放結果的存儲位置中寫入的確認結果。
優(yōu)選的,所述資源釋放請求還包括所述目標任務線程的目標標識。
優(yōu)選的,還包括:
接收詢問請求單元,用于接收所述資源調度線程發(fā)送的資源是否使用完畢的詢問請求;
發(fā)送資源類別和關鍵詞單元,用于若資源使用完畢,則向所述資源調度線程發(fā)送已使用完畢的資源類別和條目關鍵詞。
本申請中提供的資源申請方法和資源釋放方法,具有相應的技術手段,因此兩者之間具有單一性。
由以上技術內(nèi)容可以看出,本申請具有以下有益效果:
本申請在條目資源被占用的情況下,不允許任務線程占用條目資源,在條目資源未被占用的情況下,任務線程可以占用條目資源??梢岳斫獾氖?,在具有多個并行任務線程時,本申請可以達到對同時使用同一條目資源的多個任務線程逐個執(zhí)行,從而避免資源沖;針對使用不同條目資源的任務線程并行執(zhí)行。
由于本申請中針對使用不同條目資源任務線程在同一時刻并行執(zhí)行,針對使用同一條目資源的任務線程在不同時刻逐個執(zhí)行。由于減少了逐個執(zhí)行任務線程的數(shù)量,因此,縮短了執(zhí)行任務線程的時間,因此提高了任務線程的執(zhí)行效率。
附圖說明
為了更清楚地說明本申請實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本申請公開的一種資源調度過程示意圖;
圖2為本申請公開的又一種資源調度過程示意圖;
圖3為本申請實施例公開的資源申請方法的流程圖;
圖4為本申請實施例公開的資源釋放方法的流程圖;
圖5為本申請實施例公開的又一資源申請方法的流程圖;
圖6為本申請實施例公開的又一資源釋放方法的流程圖;
圖7為本申請實施例公開的資源申請裝置的結構示意圖;
圖8為本申請實施例公開的資源釋放裝置的結構示意圖;
圖9為本申請實施例公開的又一資源釋放裝置的結構示意圖;
圖10為本申請實施例公開的又一資源申請裝置的結構示意圖;
圖11為本申請實施例公開的又一資源釋放裝置的結構示意圖;
圖12為本申請實施例公開的又一資源釋放裝置的結構示意圖。
具體實施方式
下面將結合本申請實施例中的附圖,對本申請實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例。基于本申請中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護的范圍。
鑒于現(xiàn)有技術中資源調度方法對資源沖突的控制方式過于粗放,不能精細到具體條目的層面進行控制;為此,本申請發(fā)明人則設想站在具體條目的 角度執(zhí)行資源調度方法。為了提高任務線程的執(zhí)行效率,發(fā)明人設想在互聯(lián)網(wǎng)軟件上對并行執(zhí)行的多個任務線程,達到以下技術效果:在同一時刻操作同一條目的多個任務線程逐個執(zhí)行,在同一時刻操作不同條目的多個任務線程同時并行執(zhí)行。
例如,繼續(xù)以路由類資源為例。參見圖2,發(fā)明人希望達到的計數(shù)效果為:在t1時刻執(zhí)行T1、T3、T4……Tn任務線程,在t2時刻執(zhí)行T2任務線程。這樣便可以在2個時刻執(zhí)行n個任務線程。相對于現(xiàn)有技術僅能在n個時刻執(zhí)行n個任務線程而言,無疑大大提高了任務線程的執(zhí)行效率。
現(xiàn)有技術均由任務線程來執(zhí)行資源調度過程,當任務線程獲得信號量時,可以執(zhí)行任務;當任務線程未獲得信號量時,則執(zhí)行等待信號量的操作。在等待信號量的過程中,任務線程無法執(zhí)行其它操作,這會影響任務線程執(zhí)行其它任務。
為了不影響任務線程的執(zhí)行過程,本申請專門為各個任務線程的資源調度創(chuàng)建一個資源調度線程,并且資源調度線程獨立于各個任務線程而存在。任務線程僅需向資源調度線程發(fā)送資源申請請求即可,由資源調度線程來決定是否向任務線程授權。
任務線程在獲得確認結果(授權)之后,則可以使用所需資源繼續(xù)執(zhí)行任務;在獲得否認結果(未授權)之后,任務線程不可以使用所需資源執(zhí)行任務,但是,任務線程可以執(zhí)行其自身的其它程序,而不會因為未被授權而暫停執(zhí)行自身的其它程序,這樣可以提高任務線程的執(zhí)行效率。并且,原本由任務線程來執(zhí)行的資源調度過程,現(xiàn)在由資源調度線程來執(zhí)行,因此可以減少任務線程的執(zhí)行過程,這樣同樣可以提高任務線程的執(zhí)行效率。此外,各個任務線程的資源申請請求均由資源調度線程來處理,因此資源調度線程可以集中管控各個任務線程的資源申請請求。所以,本申請單獨為多個任務線程的資源調度創(chuàng)建一個資源調度線程,一個資源調度線程可以控制多個任務線程;這樣可以方便資源調度線程統(tǒng)一調度資源,并且可以提高各個任務線程的執(zhí)行效率。
在實際應用中,各個任務線程和資源調度線程均運行在CPU中。
在執(zhí)行本申請之前,可以把各個任務線程涉及到的所有資源進行分類,例如,將所有資源分為路由類資源、網(wǎng)口類資源、USB類資源等多個資源類別,當然還可以分為其它資源類別,具體情況可以依據(jù)實際情況而定,在此不作限定。
并且,可以根據(jù)每類資源的特點,為每類資源的每個條目設置唯一的條目關鍵詞。例如,路由類資源的條目關鍵詞可以為IP1、IP2、IP3……等,網(wǎng)口類資源的條目關鍵詞可以為網(wǎng)口1、網(wǎng)口2、網(wǎng)口3……等,USB類資源的條目關鍵詞可以為USB1、USB2、USB3……等。
每類資源均對應一個資源類別,每類資源中每個條目均對應一個條目關鍵詞,一個條目關鍵詞對應一個條目資源。這樣做的目的為:當任務線程在向資源調度線程申請條目資源時,可以向資源調度線程提供所需條目資源的資源類別和條目關鍵詞,以便資源調度線程依據(jù)資源類別和條目關鍵詞,能夠準確得知任務線程所需的條目資源,從而決定是否給予任務線程授權。
本申請中資源調度線程可以并行對多個任務線程進行處理,并且對每個任務線程的處理過程均是一致的。因此,本申請將多個任務線程中一個任務線程作為目標任務線程,對目標任務線程與資源調度線程之間的處理過程進行詳細說明,其它任務線程處理過程與目標任務線程的處理過程一致,在此不再贅述。
下面站在資源調度線程的角度來詳細介紹本申請的執(zhí)行過程。如圖3所示,本申請?zhí)峁┮环N資源申請方法,具體包括以下步驟:
步驟S301:接收目標任務線程發(fā)送的資源申請請求;其中,所述資源申請請求包括操作請求消息,所述操作請求消息包括目標資源類別和所述目標資源類別下的目標條目關鍵詞。
為了避免產(chǎn)生資源沖突,在目標任務線程使用條目資源之前,可以向資源調度線程發(fā)送資源申請請求。在資源申請請求中包括操作請求消息,操作請求消息中包括目標任務線程所需要使用條目資源所歸屬的目標資源類別,以及在該目標資源類別下條目資源所對應的目標條目關鍵詞。
此外,操作請求消息中還具有操作類型和申請結果。在操作請求消息中操作類型為申請類型,申請類型用于表示目標任務線程向資源調度線程申請 資源。在操作請求消息中申請結果用于表示資源調度線程對操作請求消息的授權結果;申請結果可以有三種:等待狀態(tài)、確認結果和否認結果。其中,等待狀態(tài)為資源調度線程還未處理操作請求消息時申請結果的狀態(tài),確認結果為資源調度線程確認操作請求消息時申請結果的狀態(tài),否認結果為資源調度線程否認操作請求消息時申請結果的狀態(tài)。
目標任務線程在創(chuàng)建操作請求消息之后,可以將操作請求消息存儲在CPU內(nèi)存中,以便后續(xù)使用。然后目標任務線程可以將至少包含操作請求消息的資源申請請求,發(fā)送至資源調度線程,供資源調度線程處理。
資源調度線程可以接收目標任務線程發(fā)送的資源申請請求,并通過資源申請請求中操作請求消息的目標資源類別和目標條目關鍵詞,來確定目標任務線程所需使用的條目資源,并依據(jù)條目資源來決定是否向目標任務線程授權,即授權其使用條目資源。
步驟S302:在與所述目標資源類別對應的條目占用記錄集合中,查找與所述目標條目關鍵詞對應的占用記錄,若未查找到,則進入步驟S303,若查找到,則進入步驟S305。
資源調度線程在確定目標任務線程所需使用的條目資源之后,為了避免資源沖突,首先查找該條目資源是否已被其它目標任務線程所使用。如果條目資源已被占用,則表明有另一任務線程在使用該條目資源,因此目標任務線程無法使用條目資源;如果條目資源未被占用,則表明目標任務線程可以使用條目資源。
下面介紹本申請查詢條目資源是否已被其它任務線程具體實現(xiàn)過程:
在資源調度線程所在的CPU中或者在與CPU相連的存儲器中,存儲有各類資源的占用記錄集合。每類資源利用一個資源類別表示,則每個資源類別對應一個占用記錄集合,占用記錄集合中記錄有該資源類別下的條目關鍵詞的占用記錄。
例如,A類資源下條目關鍵詞A對應的條目資源A已被對應的資源已被占用,則在資源類別A的占用記錄集合中構建條目關鍵詞A的占用記錄。B類資源下的條目關鍵詞B對應的條目資源B已被占用,則在資源類別B的占用記錄集合中構建條目關鍵詞B的占用記錄。
資源調度線程可以在資源申請請求的操作請求消息中獲得目標資源類別和目標條目關鍵詞,然后在存儲各類資源的占用記錄集合的存儲空間(CPU或與CPU相連的存儲器)中,查找與目標資源類別對應的占用記錄集合。與目標資源類別對應的占用記錄集合中記錄有該目標資源類別下的所有已被占用的條目關鍵詞對應的條目資源。因此,可以在與目標資源類別對應的占用記錄集合中查找是否有與目標條目關鍵詞對應的占用記錄。
如果與目標資源類別對應的占用記錄集合中未記錄有目標條目關鍵詞的占用記錄,則進入步驟S303,否則進入步驟S305。
步驟S303:若在與所述目標資源類別對應的條目占用記錄中,未查找到與所述目標條目關鍵詞對應的占用記錄,則確認所述目標任務線程的所述資源申請請求。
若與所述目標資源類別對應的條目占用記錄中,未查找到與所述目標條目關鍵詞對應的占用記錄,則表明目標條目關鍵詞未被其它任務線程所占用。因此資源調度線程則可以確認目標任務線程的資源申請請求,即可以為目標任務線程授權,授權其使用所需的條目資源。
步驟S304:向所述目標任務線程反饋所述資源申請請求的確認結果。
在資源調度線程確認所述目標任務線程的所述資源申請請求之后,向目標任務線程反饋資源申請請求的確認結果,以便目標任務線程得知其具有操作條目資源的權限。此后,目標任務線程則可以使用條目資源。
可以理解的是,在資源調度線程確認所述目標任務線程的所述資源申請請求之后,資源調度線程則可以授權目標任務線程使用條目資源。此后一段時間內(nèi)目標任務線程將占用目標條目關鍵詞所對應的條目資源。
由于目標條目關鍵詞所對應的條目資源已被占用,因此,可以創(chuàng)建與條目資源對應的占用記錄。
創(chuàng)建與條目資源對應的占用記錄,可以采用以下兩種方式:
第一種方式:與所述目標資源類別對應的條目占用記錄集合中,創(chuàng)建與所述目標條目關鍵詞對應的占用記錄。
第二種方式:與所述目標資源類別對應的條目占用記錄集合中,創(chuàng)建與所述目標條目關鍵詞和目標任務線程的目標標識對應的占用記錄。
第二種方式與第一種方式相比,增加了目標任務線程的目標標識。
本申請可以采用兩種方式創(chuàng)建與目標條目關鍵詞對應的占用記錄,以便其它任務線程在目標任務線程占用條目資源期間,不再使用該條目資源,從而避免資源沖突。
步驟S305:若在與所述目標資源類別對應的條目占用記錄中,查找到與所述目標條目關鍵詞對應的占用記錄,則否認所述目標任務線程的所述資源申請請求。
若資源調度線程在與所述目標資源類別對應的條目占用記錄中,查找到與所述目標條目關鍵詞對應的占用記錄,則說明目標條目關鍵詞對應的條目資源已被其它任務線程占用,若繼續(xù)使用該條目資源,則會產(chǎn)生資源沖突。因此,資源調度線程否認目標任務線程的資源申請請求。目標任務線程暫時不可以使用條目資源。
步驟S306:向所述目標任務線程反饋所述資源申請請求的否認結果。
在資源調度線程否認目標任務線程的資源申請請求之后,向目標任務線程反饋資源申請請求的否認結果,以便目標任務線程得知其自身目前無法繼續(xù)使用與條目關鍵詞對應的條目資源。
通過以上實施例可以得出,本申請在條目資源被占用的情況下,不允許任務線程占用條目資源,在條目資源未被占用的情況下,任務線程可以占用條目資源。可以理解的是,在具有多個并行任務線程時,本申請可以達到對同時使用同一條目資源的多個任務線程逐個執(zhí)行,從而避免資源沖;針對使用不同條目資源的任務線程并行執(zhí)行。
由于本申請中針對使用不同條目資源任務線程在同一時刻并行執(zhí)行,針對使用同一條目資源的任務線程在不同時刻逐個執(zhí)行。由于減少了逐個執(zhí)行任務線程的數(shù)量,因此,縮短了執(zhí)行任務線程的時間,因此提高了任務線程的執(zhí)行效率。
例如,參見圖2,現(xiàn)有技術中執(zhí)行n個任務線程需要n個時刻,在使用本申請的后,由于T1、T3、T4……Tn任務線程在t1時刻并行執(zhí)行,T2任務線程在t2時刻執(zhí)行,由于減少逐個執(zhí)行任務線程的數(shù)量,因此僅需要2個時刻便可完成n個任務線程,因此大大提高了任務線程的執(zhí)行效率。執(zhí)行多個任務線程所需要的時刻數(shù)量依據(jù)使用同一資源條目任務線程的數(shù)量不同而不 同,本例只是一個舉例,并不指定所有的n個任務線程均可以在2個時刻執(zhí)行完畢。
此外,本申請單獨為各個任務線程創(chuàng)建一個資源調度線程,資源調度線程可以統(tǒng)一管控各個任務線程資源申請請求。使得各個任務線程不再執(zhí)行資源調度過程,這從另一方面也可以提高任務線程的執(zhí)行效率。
并且,任務線程僅僅是接收資源調度線程的一個確認結果和否認結果,任務線程在接收否認結果后不會像現(xiàn)有技術一樣處于等待狀態(tài),而是可以繼續(xù)執(zhí)行其它軟件程序,這從另一方面也可以提高任務線程的執(zhí)行效率;也可以提高任務線程執(zhí)行軟件程序的靈活性。
下面對步驟S304和步驟S306中資源調度線程向目標任務線程反饋確認結果或否認結果的過程,進行進一步的介紹。
資源調度線程向目標任務線程反饋確認結果或否認結果可以采用以下兩種方式來實現(xiàn):
第一種方式:資源調度線程創(chuàng)建一個包含確認結果或否認結果的反饋消息,將反饋消息發(fā)送至目標任務線程。
由于目標任務線程向資源調度線程發(fā)送操作請求消息,一般情況下,資源調度線程以同樣的格式向目標任務線程發(fā)送反饋消息。即,反饋消息中包括目標資源類別、目標條目關鍵詞、申請類型和申請結果。在具體實現(xiàn)時可以將操作請求消息的目標資源類別、目標條目關鍵詞和申請類型復制到反饋消息中,并在申請結果處寫入確認結果或否認結果,從而生成反饋消息。
當資源調度線程向目標任務線程發(fā)送確認結果時,則構建包含目標資源類別、目標條目關鍵詞、申請類型和確認結果的反饋消息,然后將反饋消息發(fā)送至目標任務線程。
當資源調度線程向目標任務線程發(fā)送否認結果時,則構建包含目標資源類別、目標條目關鍵詞、申請類型和否認結果的反饋消息,然后將反饋消息發(fā)送至目標任務線程。
但是,在第一種方式中資源調度線程需要在操作請求消息中復制一些重復內(nèi)容,執(zhí)行步驟較為繁瑣,并且由于反饋消息的內(nèi)容較多,在資源調度線 程向目標任務線程發(fā)送的反饋消息用時較長,因此降低了反饋消息的傳輸效率。
為此,本申請?zhí)峁┵Y源調度線程向目標任務線程發(fā)送確認結果或否認結果的第二種方式。
在步驟S301的介紹中有涉及到,操作請求消息在內(nèi)存中存儲,操作請求消息中具有申請結果。因此,目標任務線程在可以在資源申請請求中添加第一位置指針,第一位置指針用于指向所述操作請求消息中申請結果的存儲位置。
第二種方式:向第一位置指針指向的申請結果的存儲位置中寫入確認結果或否認結果。
在第二種方式中資源調度線程不再向目標任務線程發(fā)送反饋消息,而是直接依據(jù)第一位置指針在內(nèi)存中查找到申請結果的存儲位置,從而可以直接回寫確認結果或否認結果即可,而不需向目標任務線程發(fā)送反饋消息。
目標任務線程檢測資源申請消息中的申請結果便可以得知資源調度線程反饋的是確認結果還是否認結果。
在第二種方式中,向所述目標任務線程反饋所述資源申請請求的確認結果,具體包括:向所述第一位置指針指向的所述申請結果的存儲位置中寫入確認結果。向所述目標任務線程反饋所述資源申請請求的否認結果,具體包括:向所述第一位置指針指向的所述申請結果的存儲位置中寫入否認結果。
在第二種方式中資源調度線程以第一位置指針的方式向操作請求消息中回寫申請結果,這樣做的優(yōu)勢為可以減少CPU中內(nèi)存的分配次數(shù),避免內(nèi)存碎片的產(chǎn)生;同時不需要從操作請求消息中向反饋消息中復制重復內(nèi)容,因此簡化處理過程,提高了回寫確認結果和否認結果的處理效率。
在執(zhí)行完成圖3所示的實施例之后,若目標任務線程檢測到申請結果為確認結果,則表示其可以使用條目資源。在目標任務線程接收到否認結果后,表明目標任務線程所需使用的條目資源目前已被另一任務線程占用,目標任務線程目前無法使用。
但是,在另一任務線程使用結束之后,目標任務線程便可以使用條目資源。因此,目標任務線程可以在延時預設時間后,可以重新向資源調度線程發(fā)送資源申請請求;資源調度線程會按照圖3所示的實施例的方式,重新處理資源申請請求。
若目標任務線程所需使用的條目資源仍被占用,則資源調度線程繼續(xù)向目標任務線程反饋否認結果。目標任務線程在接收否認結果后,仍然可以延時預設時間后,重新向資源調度線程發(fā)送資源申請請求,直到接收到資源調度線程反饋的確認結果。然后,目標任務線程則可以使用與目標條目關鍵詞對應的條目資源。
目標任務線程結束使用與目標條目關鍵詞對應的條目資源結束之后,需要釋放與目標條目關鍵詞對應的條目資源。即為了方便其它任務線程使用同一條目資源,在目標任務線程使用條目資源結束后,需要刪除存儲空間中與目標條目關鍵詞對應的條目資源的占用記錄。
下面介紹釋放與目標條目關鍵詞對應的條目資源的過程,如圖4所示,本申請?zhí)峁┝艘环N資源釋放方法,具體包括以下步驟:
步驟S401:接收所述目標任務線程發(fā)送的資源釋放請求;其中,所述資源釋放請求包括操作釋放消息,所述操作釋放消息包括目標資源類別和所述目標資源類別下的目標條目關鍵詞。
在目標任務線程使用條目資源完畢之后,可以主動向資源調度線程發(fā)送資源釋放請求,資源釋放請求中包括操作釋放消息。操作釋放消息中包括目標任務線程所需釋放條目資源所歸屬的目標資源類別,以及條目資源所對應的目標條目關鍵詞。此外,操作釋放消息中還具有操作類型和釋放結果。在操作釋放消息中操作類型為釋放類型,釋放類型用于表示目標任務線程向資源調度線程釋放資源。在操作釋放消息中釋放結果,用于表示資源調度線程對操作釋放消息的授權結果。釋放結果可以有兩種:等待狀態(tài)和確認結果。其中,等待狀態(tài)為資源調度線程還未處理操作釋放消息時釋放結果的狀態(tài),確認結果為資源調度線程確認操作釋放消息時釋放結果的狀態(tài)。
目標任務線程在創(chuàng)建操作釋放消息之后。可以將操作釋放消息存儲在CPU內(nèi)存中,以便后續(xù)使用。然后將至少包含操作釋放消息的資源釋放請求發(fā)送至資源調度線程。
步驟S402:在與所述目標資源類別對應的條目占用記錄集合中,刪除與所述目標條目關鍵詞對應的占用記錄。
資源調度線程在接收資源釋放請求之后,獲得目標資源類別和目標條目關鍵詞。然后在各類資源占用的存儲空間中,查找與目標資源類別對應的占用記錄集合;并在與目標資源類別對應的占用記錄集合中,刪除與所述目標條目關鍵詞對應的占用記錄。
步驟S403:向所述目標任務線程反饋所述資源釋放請求的確認結果。
在刪除與所述目標條目關鍵詞對應的占用記錄之后,向目標任務線程反饋所述資源釋放請求的確認結果。
與資源調度線程向目標任務線程發(fā)送資源申請請求的確認結果類似,步驟S403中資源調度線程向目標任務線程發(fā)送資源釋放請求的確認結果,也具有兩種實現(xiàn)方式:
第一種方式:資源調度線程創(chuàng)建一個包含確認結果的反饋消息,將反饋消息發(fā)送至目標任務線程。
資源調度線程在操作釋放消息中,將目標資源類別、目標條目關鍵詞和申請類型復制到反饋消息中,并在申請結果處寫入確認結果,從而生成反饋消息。然后,資源調度線程可以將反饋消息發(fā)送至目標任務線程。
第二種方式:向所述第二位置指針對應的所述釋放結果中寫入確認結果。
在步驟S401的介紹中有涉及到,操作釋放消息在內(nèi)存中存儲,操作釋放消息中具有釋放結果。因此,目標任務線程在可以在資源釋放請求中添加第二位置指針,第二位置指針用于指向所述操作釋放消息中釋放結果的存儲位置。
在第二種方式中資源調度線程不再向目標任務線程發(fā)送反饋消息,而是直接依據(jù)第二位置指針在內(nèi)存中查找到釋放結果的存儲位置,從而可以直接回寫確認結果可,而不需向目標任務線程發(fā)送反饋消息。
目標任務線程檢測操作釋放消息中的釋放結果便可以得知資源調度線程是否反饋了確認結果。在目標任務線程釋放條目資源之后,其它任務線程便可以繼續(xù)使用該條目資源,從而解決資源沖突的問題。
在一些情況下,目標任務線程可能出現(xiàn)故障,如若目標任務線程具有占用記錄,則可能無法向資源調度線程發(fā)送資源釋放請求。所以,本申請中,資源調度線程,可以在創(chuàng)建占用記錄之后,便記錄目標任務線程占用條目資源的占用時間。
若占用時間達到預設時間后,仍未收到目標任務線程發(fā)送的資源釋放請求,資源調度線程可以查看目標任務線程是否處于正常狀態(tài)。如經(jīng)過查看發(fā)現(xiàn)目標任務線程處于正常狀態(tài),表明任務線程仍可以正常工作,此時無需處理。
若經(jīng)過查看發(fā)現(xiàn)目標任務線程,未處于正常狀態(tài),則此時表明任務線程不可以正常工作。此時,目標任務線程可能無法釋放資源,為了不影響其它任務線程使用條目資源,資源調度線程強制刪除與所述目標標識對應的所有占用記錄;以便其它任務線程可以繼續(xù)使用條目資源。
圖4所示的方式為目標任務線程主動向資源調度線程發(fā)送資源釋放請求,在此之上,本申請中資源調度線程還可以以輪詢方式釋放資源。
具體方式可以為:在資源調度線程的占用記錄中,各個占用記錄與任務線程標識一一對應,所以,資源調度線程通過占用記錄便可得知,具有占用記錄的任務線程。然后以固定周期,向各個具有占用記錄的各個任務線程發(fā)送資源是否使用完畢的詢問請求。以目標任務線程為例,資源調度線程向目標任務線程發(fā)送資源是否使用完畢的詢問請求。
目標任務線程若使用完畢,則將目標資源類別和目標條目關鍵詞,發(fā)送至資源調度線程,供資源調度線程釋放條目資源。資源調度線程在接收目標資源類別和目標條目關鍵詞之后,在與所述目標資源類別對應的條目占用記錄集合中,刪除與所述目標條目關鍵詞對應的占用記錄。以上為資源調度線程所執(zhí)行的具體過程,下面介紹目標任務線程所執(zhí)行的具體過程。
如圖5所示,本申請?zhí)峁┝艘环N資源申請方法,包括:
步驟S501:創(chuàng)建操作請求消息。
為了避免產(chǎn)生資源沖突,在目標任務線程使用條目資源之前,首先創(chuàng)建操作請求消息。所述操作請求消息包括目標資源類別和所述目標資源類別下的目標條目關鍵詞。所述資源申請請求還可以包括目標任務線程的目標標識。
此外,操作請求消息中還具有操作類型和申請結果;在操作請求消息中操作類型為申請類型,申請類型用于表示目標任務線程向資源調度線程申請資源;申請結果用于表示資源調度線程對操作請求消息的授權結果。申請結果可以有三種:等待狀態(tài)、確認結果和否認結果。其中,等待狀態(tài)為資源調度線程還未處理操作請求消息時申請結果的狀態(tài),確認結果為資源調度線程確認操作請求消息時申請結果的狀態(tài),否認結果為資源調度線程否認操作請求消息時申請結果的狀態(tài)。
目標任務線程在創(chuàng)建操作請求消息之后??梢詫⒉僮髡埱笙⒋鎯υ贑PU內(nèi)存中,以便后續(xù)使用。
步驟S502:向資源調度線程發(fā)送資源申請請求;其中所述資源申請請求包括所述操作請求消息。然后,進入步驟S503或者步驟S504。
目標任務線程在創(chuàng)建操作請求消息之后,可以將至少包含操作請求消息的資源申請請求,發(fā)送至資源調度線程,供資源調度線程處理。資源調度線程在按圖3所示的實施例執(zhí)行之后,向目標任務線程反饋確認結果或者否認結果。
步驟S503:接收所述資源調度線程反饋的所述資源申請請求的確認結果;其中,所述確認結果為,所述資源調度線程利用在與所述目標資源類別對應的條目占用記錄集合中未查找到與所述目標條目關鍵詞對應的占用記錄的方式,確認所述目標任務線程所述資源申請請求后,向所述目標任務線程發(fā)送的。
步驟S504:接收所述資源調度線程反饋的所述資源申請請求的否認結果;其中,所述否認結果為,所述資源調度線程利用在與所述目標資源類別對應的條目占用記錄集合中查找到與所述目標條目關鍵詞對應的占用記錄的方式,否認所述目標任務線程所述資源申請請求后,向所述目標任務線程發(fā)送的。
下面介紹目標任務線程接收確認結果和否認結果的兩種實現(xiàn)方式:
第一種方式:接收資源調度線程以反饋消息方式發(fā)送的確認結果和否認結果。
反饋消息中包括目標資源類別、目標條目關鍵詞、申請類型和申請結果;目標任務線程在依據(jù)申請結果,來得知資源調度線程反饋的是確認結果還是否認結果。
第二種方式:接收資源調度線程向第一位置指針指向的所述申請結果的存儲位置中寫入的確認結果或否認結果。
在目標任務線程向資源調度線程發(fā)送的資源申請請求中,還可以包括第一位置指針,所述第一位置指針用于指向所述操作請求消息中申請結果的存儲位置。
則所述接收所述資源調度線程反饋的所述資源申請請求的確認結果,包括:接收所述資源調度線程向所述第一位置指針指向的所述申請結果的存儲位置中寫入的確認結果。
則所述接收所述資源調度線程反饋的所述資源申請請求的否認結果,包括:接收所述資源調度線程向所述第一位置指針指向的所述申請結果的存儲位置中寫入的否認結果。目標任務線程在向資源調度線程發(fā)送資源申請請求發(fā)送之后,可以不斷地檢測資源申請請求中操作請求消息中的申請結果,如果申請結果不為等待狀態(tài),則說明資源調度線程已經(jīng)處理資源申請請求。如果申請結果為確認結果,則說明資源調度線程授權目標任務線程使用條目資源,因此目標任務線程可以使用條目資源。如果目標任務線程檢測到申請結果為否認結果,則說明資源調度線程未授權目標任務線程使用條目資源。
在執(zhí)行完成圖3所示的實施例之后,若目標任務線程檢測到申請結果為確認結果,則表示其可以使用條目資源。在目標任務線程接收到否認結果后,表明目標任務線程所需使用的條目資源目前已被另一任務線程占用,目標任務線程目前無法使用。但是,在另一任務線程使用結束之后,目標任務線程便可以使用條目資源,因此目標任務線程在接收所述資源調度線程反饋的所述資源申請請求的否認結果之后,還包括:
在延遲預設時間后重新向所述資源調度線程發(fā)送所述資源申請請求的步驟,在接收到所述資源調度線程反饋的否認結果之后,重復執(zhí)行在延遲預設時間后重新向所述資源調度線程發(fā)送所述資源申請請求的步驟,直到接收到所述資源調度線程反饋的確認結果。在目標任務線程獲得確認結果之后,可以使用條目資源。
目標任務線程結束使用與目標條目關鍵詞對應的條目資源結束之后,需要釋放與目標條目關鍵詞對應的條目資源。即為了方便其它任務線程使用同一條目資源,在目標任務線程使用條目資源結束后,需要刪除存儲空間中與目標條目關鍵詞對應的條目資源的占用記錄。
下面介紹釋放與目標條目關鍵詞對應的條目資源的過程,如圖6所示,本申請?zhí)峁┝艘环N資源釋放方法,具體包括以下步驟:
步驟S601:創(chuàng)建操作釋放消息;其中,所述操作釋放消息包括目標資源類別和所述目標條目關鍵詞。
此外,操作釋放消息中還具有操作類型和釋放結果。在操作釋放消息中操作類型為釋放類型,釋放類型用于表示目標任務線程向資源調度線程釋放資源。在操作釋放消息中釋放結果,用于表示資源調度線程對操作釋放消息的授權結果。釋放結果可以有兩種:等待狀態(tài)和確認結果。其中,等待狀態(tài)為資源調度線程還未處理操作釋放消息時釋放結果的狀態(tài),確認結果為資源調度線程確認操作釋放消息時釋放結果的狀態(tài)。
步驟S602:向所述資源調度線程發(fā)送資源釋放請求;其中,所述資源釋放請求包括操作釋放消息。
步驟S603:接收所述資源調度線程反饋的所述資源釋放請求的確認結果。
與目標任務線程接收資源調度線程發(fā)送資源申請請求的確認結果類似,步驟S603中目標任務線程接收資源調度線程發(fā)送的資源釋放請求的確認結果,也具有兩種實現(xiàn)方式:
第一種方式:接收資源調度線程以反饋消息方式發(fā)送的確認結果。
資源調度線程在操作釋放消息中,將目標資源類別、目標條目關鍵詞和申請類型復制到反饋消息中,并在申請結果處寫入確認結果,從而生成反饋 消息。然后,資源調度線程可以將反饋消息發(fā)送至目標任務線程,從而使得目標任務線程可以接收反饋消息。
第二種方式:接收資源調度線程向第二位置指針指向的所述釋放結果的存儲位置中寫入的確認結果。
在步驟S501的介紹中有涉及到,操作釋放消息在內(nèi)存中存儲,操作釋放消息中具有釋放結果。因此,目標任務線程在可以在資源釋放請求中添加第二位置指針,第二位置指針用于指向所述操作釋放消息中釋放結果的存儲位置。
在第二種方式中資源調度線程不再向目標任務線程發(fā)送反饋消息,而是直接依據(jù)第二位置指針在內(nèi)存中查找到釋放結果的存儲位置,從而可以直接回寫確認結果可,而不需向目標任務線程發(fā)送反饋消息。
目標任務線程在發(fā)送操作釋放消息之后,不斷檢測操作釋放消息中的釋放結果便可以得知資源調度線程是否反饋了確認結果。在目標任務線程釋放條目資源之后,其它任務線程便可以繼續(xù)使用該條目資源,從而解決資源沖突的問題。由于圖3和圖4所示的實施例中,已詳盡描述了目標任務線程的執(zhí)行過程,因此在圖5和圖6所示的實施例為目標任務線程有不清楚的地方,可以參見圖3和圖4所示的實施例,在此不再贅述。
與圖3所示的資源申請方法相對應,本申請還提供了一種資源申請裝置。如圖7所示,所述裝置具體包括:
第一接收單元71,用于接收目標任務線程發(fā)送的資源申請請求;其中,所述資源申請請求包括操作請求消息,所述操作請求消息包括目標資源類別和所述目標資源類別下的目標條目關鍵詞。
其中,所述第一接收單元71,還用于重新接收所述目標任務線程發(fā)送的所述資源申請請求。
第一確認單元72,用于若在與所述目標資源類別對應的條目占用記錄集合中,未查找到與所述目標條目關鍵詞對應的占用記錄,則確認所述目標任務線程的所述資源申請請求。
第一反饋確認結果單元73,用于向所述目標任務線程反饋所述資源申請請求的確認結果。
此外,還包括與第一確認單元72相連的第一創(chuàng)建記錄單元74,用于在與所述目標資源類別對應的條目占用記錄集合中,創(chuàng)建與所述目標條目關鍵詞對應的占用記錄。
或者,與第一確認單元72相連的第二創(chuàng)建記錄單元75,在所述資源申請請求還包括目標任務線程的目標標識的情況下,在與所述目標資源類別對應的條目占用記錄集合中,創(chuàng)建與所述目標條目關鍵詞和所述目標標識對應的占用記錄。
否認單元76,用于若在與所述目標資源類別對應的條目占用記錄集合中,查找到與所述目標條目關鍵詞對應的占用記錄,則否認所述目標任務線程的所述資源申請請求。
反饋否認結果單元77,用于向所述目標任務線程反饋所述資源申請請求的否認結果。
在所述資源申請請求還包括第一位置指針,所述第一位置指針用于指向所述操作請求消息中申請結果的存儲位置。
則第一反饋確認結果單元73,具體用于:向所述第一位置指針指向的所述申請結果的存儲位置中寫入確認結果。
則反饋否認結果單元77,具體用于:向所述第一位置指針指向的所述申請結果的存儲位置中寫入否認結果。
如圖8所示,本申請?zhí)峁┑囊环N資源釋放裝置,包括:
第二接收單元81,用于接收所述目標任務線程發(fā)送的資源釋放請求;其中,所述資源釋放請求包括操作釋放消息,所述操作釋放消息包括所述目標資源類別和所述目標條目關鍵詞。
刪除記錄單元82,用于在與所述目標資源類別對應的條目占用記錄集合中,刪除與所述目標條目關鍵詞對應的占用記錄。
第二反饋確認結果單元83,用于向所述目標任務線程反饋所述資源釋放請求的確認結果。
在所述資源釋放請求還包括第二位置指針,所述第二位置指針用于指向所述操作釋放消息中釋放結果的存儲位置。
則第二反饋確認結果單元83具體用于:向所述第二位置指針指向的所述釋放結果的存儲位置中寫入確認結果。
如圖9所示,在所述資源釋放請求還包括所述目標任務線程的目標標識的情況下,資源釋放裝置還包括:
查看單元91,用于在預設時間內(nèi)未接收到所述目標任務線程發(fā)送的資源釋放請求,則查看所述目標任務線程是否處于正常狀態(tài);
所述刪除記錄單元82,還用于若所述目標任務線程未處于正常狀態(tài),則刪除與所述目標標識對應的所有占用記錄。
如圖9所示,資源釋放裝置還包括:
發(fā)送詢問請求單元93,用于向所述目標任務線程發(fā)送資源是否使用完畢的詢問請求;
接收資源類別和關鍵詞單元94,用于若所述目標任務線程的資源使用完畢,則接收所述目標任務線程發(fā)送的已使用完畢的資源類別和條目關鍵詞;
所述刪除記錄單元82,還用于在與所述目標資源類別對應的條目占用記錄集合中,刪除與所述目標條目關鍵詞對應的占用記錄。
與圖5所示的資源申請方法相對應,本申請還提供過了一種資源申請裝置。如圖10所示,所述裝置包括:
第一創(chuàng)建消息單元101,用于創(chuàng)建操作請求消息;其中,所述操作請求消息包括目標資源類別和所述目標資源類別下的目標條目關鍵詞。所述資源申請請求還包括目標任務線程的目標標識。
第一發(fā)送單元102,用于向資源調度線程發(fā)送資源申請請求;其中,所述資源申請請求包括所述操作請求消息。
第一接收確認結果單元103,用于接收所述資源調度線程反饋的所述資源申請請求的確認結果;其中,所述確認結果為,所述資源調度線程利用在與所述目標資源類別對應的條目占用記錄集合中未查找到與所述目標條目關鍵詞對應的占用記錄的方式,確認所述目標任務線程所述資源申請請求后,向所述目標任務線程發(fā)送的。
接收否認結果單元104,用于接收所述資源調度線程反饋的所述資源申請請求的否認結果;其中,所述否認結果為,所述資源調度線程利用在與所述目標資源類別對應的條目占用記錄集合中查找到與所述目標條目關鍵詞對應的占用記錄的方式,否認所述目標任務線程所述資源申請請求后,向所述目標任務線程發(fā)送的。
在所述資源申請請求還包括第一位置指針,所述第一位置指針用于指向所述操作請求消息中申請結果的存儲位置。
則所述第一接收確認結果單元103,具體用于接收所述資源調度線程向所述第一位置指針指向的所述申請結果的存儲位置中寫入的確認結果。
則所述接收否認結果單元104,具體用于接收所述資源調度線程向所述第一位置指針指向的所述申請結果的存儲位置中寫入的否認結果。
其中,所述第一發(fā)送單元102,還用于在延遲預設時間后,重新向所述資源調度線程發(fā)送所述資源申請請求。
判斷單元105,用于若接收到所述資源調度線程反饋的否認結果之后,觸發(fā)所述第一發(fā)送單元102重復執(zhí)行在延遲預設時間后重新向所述資源調度線程發(fā)送所述資源申請請求的步驟,直到接收到所述資源調度線程反饋的確認結果。
如圖11所示,本申請還提供的資源釋放裝置,包括:
第二創(chuàng)建消息單元111,用于創(chuàng)建操作釋放消息;其中,所述操作釋放消息包括目標資源類別和所述目標條目關鍵詞。所述資源釋放請求還包括所述目標任務線程的目標標識。
第二發(fā)送單元112,用于向所述資源調度線程發(fā)送資源釋放請求;其中,所述資源釋放請求包括操作釋放消息。
第二接收確認結果單元113,用于接收所述資源調度線程反饋的所述資源釋放請求的確認結果。
在所述資源釋放請求還包括第二位置指針,所述第二位置指針用于指向所述操作釋放消息中的釋放結果的存儲位置。
則所述第二接收確認結果單元113,具體用于接收所述資源調度線程向所述第二位置指針指向的所述釋放結果的存儲位置中寫入的確認結果。
如圖12,所述資源釋放裝置,還包括:
接收詢問請求單元121,用于接收所述資源調度線程發(fā)送的資源是否使用完畢的詢問請求;
發(fā)送資源類別和關鍵詞單元122,用于若資源使用完畢,則向所述資源調度線程發(fā)送已使用完畢的資源類別和條目關鍵詞。
通過以上實施例可以得出,本申請在條目資源被占用的情況下,不允許任務線程占用條目資源,在條目資源未被占用的情況下,任務線程可以占用條目資源。可以理解的是,在具有多個并行任務線程時,本申請可以達到對同時使用同一條目資源的多個任務線程逐個執(zhí)行,從而避免資源沖;針對使用不同條目資源的任務線程并行執(zhí)行。
由于本申請中針對使用不同條目資源任務線程在同一時刻并行執(zhí)行,針對使用同一條目資源的任務線程在不同時刻逐個執(zhí)行。由于減少了逐個執(zhí)行任務線程的數(shù)量,因此,縮短了執(zhí)行任務線程的時間,因此提高了任務線程的執(zhí)行效率。
本實施例方法所述的功能如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算設備可讀取存儲介質中。基于這樣的理解,本申請實施例對現(xiàn)有技術做出貢獻的部分或者該技術方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該軟件產(chǎn)品存儲在一個存儲介質中,包括若干指令用以使得一臺計算設備(可以是個人計算機,服務器,移動計算設備或者網(wǎng)絡設備等)執(zhí)行本申請各個實施例所述方法的全部或部分步驟。而前述的存儲介質包括:U盤、移動硬盤、只讀存儲器(ROM,Read-Only Memory)、隨機存取存儲器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質。
本說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其它實施例的不同之處,各個實施例之間相同或相似部分互相參見即可。
對所公開的實施例的上述說明,使本領域專業(yè)技術人員能夠實現(xiàn)或使用本申請。對這些實施例的多種修改對本領域的專業(yè)技術人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本申請的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本申請將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。