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