專利名稱:對共享資源的加鎖、控制方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機應(yīng)用領(lǐng)域,特別涉及一種對共享資源的加鎖方法和裝置,對共享資源的控制方法和裝置。
背景技術(shù):
在計算機應(yīng)用領(lǐng)域,在應(yīng)用使用或操作共享資源的過程中,加鎖機制是一種對共享資源的獨占式控制方式,以保證在同一時間只有一個應(yīng)用可以使用被鎖定的共享資源?,F(xiàn)有的加鎖機制一般過程為在應(yīng)用需要使用某一共享資源時,若該共享資源沒有被鎖定(即沒有被其他應(yīng)用使用),則鎖定該共享資源,然后使用該共享資源,在應(yīng)用使用完該共享資源后,解除對該共享資源的鎖定;若該共享資源被鎖定(即被其他應(yīng)用使用)則等待直至該共享資源被解鎖。然而,當(dāng)有多個應(yīng)用分別需要使用多個共享資源時,例如,應(yīng)用Al和A2都需要使用共享資源Zl和Z2,如果應(yīng)用Al先鎖定共享資源Zl再鎖定共享資源Z2,應(yīng)用A2先鎖定共享資源Z2再鎖定共享資源Zl,當(dāng)應(yīng)用Al在鎖定共享資源Z2時,共享資源Z2已被應(yīng)用A2鎖定,并且,當(dāng)應(yīng)用A2在鎖定共享資源Zl時,共享資源Zl已被應(yīng)用Al鎖定,這種情況下,應(yīng)用Al和A2均會處于等待狀態(tài),并且共享資源Zl和Z2也將一直處于鎖定狀態(tài),也就是死鎖狀態(tài),其他應(yīng)用也不能使用共享資源Zl和Z2。由此可見,現(xiàn)有的加鎖機制使得對共享資源的并發(fā)性控制的準(zhǔn)確率和效率并不聞。
發(fā)明內(nèi)容
本發(fā)明技術(shù)方案要解決是現(xiàn)有對共享資源的并發(fā)性操作的準(zhǔn)確率和效率不高的問題。為解決上述問題,本發(fā)明技術(shù)方案提供一種對共享資源的加鎖方法,包括接收對共享資源的控制指令;解析所述控制指令,獲取多個需操作的共享資源;當(dāng)所述多個需操作的共享資源都處于解鎖狀態(tài),則鎖定所有所述需操作的共享資源。可選的,所述對共享資源的加鎖方法還包括當(dāng)所述多個需操作的共享資源中有處于鎖定狀態(tài)的共享資源,則等待所述處于鎖定狀態(tài)的共享資源解鎖后,鎖定所有需操作的共享資源??蛇x的,當(dāng)所述等待的時間超過預(yù)定時間,則確定對所述多個需操作的共享資源的加鎖失敗。可選的,所述對共享資源的加鎖方法還包括預(yù)先配置資源池,所述資源池包括多個資源單元,分別用于存儲所述共享資源。可選的,所述資源池具有矩陣型結(jié)構(gòu),鎖定所有需操作的共享資源包括鎖定存儲所述需操作的共享資源的資源單元所在行的所有資源單元中的共享資源。可選的,所述資源池具有矩陣型結(jié)構(gòu),鎖定所有需操作的共享資源包括鎖定存儲所述需操作的共享資源的資源單元所在列的所有資源單元中的共享資源。
為解決上述技術(shù)問題,本發(fā)明技術(shù)方案還提供一種對共享資源的控制方法,包括 所述的對共享資源的鎖定方法;在所有所述需操作的共享資源被鎖定后,執(zhí)行所述控制指 令。
可選的,所述對共享資源的控制方法還包括在執(zhí)行完所述控制指令后,對被鎖定 的共享資源進行解鎖。
為解決上述技術(shù)問題,本發(fā)明技術(shù)方案還提供一種對共享資源的加鎖裝置,包括 接收單元,適于接收對共享資源的控制指令;解析單元,適于解析所述控制指令,獲取多個 需操作的共享資源;加鎖單元,適于當(dāng)所述多個需操作的共享資源都處于解鎖狀態(tài),則鎖定 所有所述需操作的共享資源。
可選的,所述加鎖單元還適于當(dāng)所述多個需操作的共享資源中有處于鎖定狀態(tài)的 共享資源,則等待所述處于鎖定狀態(tài)的共享資源解鎖后,鎖定所有需操作的共享資源。
可選的,所述加鎖單元還適于當(dāng)所述等待的時間超過預(yù)定時間,則確定對所述多 個需操作的共享資源的加鎖失敗。
可選的,所述對共享資源的加鎖裝置還包括配置單元,適于預(yù)先配置資源池,所 述資源池包括多個資源單元,分別用于存儲所述共享資源。
可選的,所述資源池具有矩陣型結(jié)構(gòu),所述加鎖單元鎖定所有需操作的共享資源 是指鎖定存儲所述需操作的共享資源的資源單元所在行的所有資源單元中的共享資源。
可選的,所述資源池具有矩陣型結(jié)構(gòu),所述加鎖單元鎖定所有需操作的共享資源 是指鎖定存儲所述需操作的共享資源的資源單元所在列的所有資源單元中的共享資源。
未解決上述技術(shù)問題,本發(fā)明技術(shù)方案還提供一種對共享資源的控制裝置,包括 所述的對共享資源的鎖定裝置;執(zhí)行單元,適于在所有所述需操作的共享資源被鎖定后,執(zhí) 行所述控制指令。
可選的,所述對共享資源的控制裝置還包括解鎖單元,適于在執(zhí)行完所述控制指 令后,對被鎖定的共享資源進行解鎖。
綜上所述,本發(fā)明技術(shù)方案在確定所有需操作的共享資源均未鎖定后再鎖定所有 所述需操作的共享資源,相比于現(xiàn)有技術(shù)逐一判斷并鎖定共享資源的方案,避免了死鎖問 題,提高了對共享資源的并發(fā)性控制的準(zhǔn)確率和效率。
圖1是本發(fā)明技術(shù)方案的對共享資源的加鎖方法的基本流程示意圖2是本發(fā)明技術(shù)方案的對共享資源的控制方法的基本流程示意圖3是本發(fā)明技術(shù)方案的對共享資源的控制方法的實施例流程示意圖4是本發(fā)明技術(shù)方案中所配置的資源池的實施例結(jié)構(gòu)示意圖5是本發(fā)明技術(shù)方案的對共享資源的控制方法的另一實施例流程示意圖。
具體實施方式
發(fā)明人分析,現(xiàn)有的對共享資源的加鎖過程中,當(dāng)應(yīng)用需要使用多個共享資源時, 是以單個共享資源為單位進行判斷并鎖定,即在確定一個共享資源未鎖定則將其鎖定,然后再判斷另一個共享資源是否已鎖定。這樣當(dāng)多個應(yīng)用并發(fā)執(zhí)行,需要使用多個相同的共 享資源時,就會因不同應(yīng)用執(zhí)行判斷和鎖定同一共享資源的時間順序不同而產(chǎn)生死鎖問 題。鑒于此,發(fā)明人提出,當(dāng)應(yīng)用需要使用多個共享資源時,先確定所有需要使用的共享資 源均未鎖定,再對所有需要使用的共享資源批量加鎖。
因此,本發(fā)明技術(shù)方案的對共享資源的加鎖方法如圖1所示,包括
步驟S11,接收對共享資源的控制指令;
步驟S12,解析所述控制指令,獲取多個需操作的共享資源;
步驟S13,當(dāng)所述多個需操作的共享資源都處于解鎖狀態(tài),則鎖定所有所述需操作 的共享資源。
所述共享資源是指可供應(yīng)用調(diào)用或操作的資源,例如可以是單個數(shù)據(jù),也可以是 復(fù)合數(shù)據(jù)(如數(shù)據(jù)表、數(shù)據(jù)表中的一行數(shù)據(jù)等)。所述對共享資源的控制指令是指調(diào)用或操 作共享資源的指令,所述操作可以是讀取操作、修改操作等,其中,修改操作可以是對讀取 的資源進行數(shù)學(xué)運算或邏輯運算,將運算結(jié)果作為更新后的資源。
進一步,所述的對共享資源的加鎖方法還可以包括當(dāng)所述多個需操作的共享資 源中有處于鎖定狀態(tài)的共享資源,則等待所述處于鎖定狀態(tài)的共享資源解鎖后,鎖定所有 需操作的共享資源。
可選的,為了避免等待的時間過長而導(dǎo)致系統(tǒng)癱瘓,還可以設(shè)置一個預(yù)定時間,若 所述等待的時間超過預(yù)定時間,則確定對所述多個需操作的共享資源的加鎖失敗。所述預(yù) 定時間為經(jīng)驗值,可以根據(jù)實際應(yīng)用設(shè)置。
具體實施時,系統(tǒng)可以為所有的共享資源配置一存儲區(qū)域(可稱為資源池),所述 存儲區(qū)域包括多個存儲單元(可稱為資源單元),每個存儲單元存儲一個共享資源。
基于上述對共享資源的加鎖方法,本發(fā)明技術(shù)方案的對共享資源的控制方法如圖 2所示,包括
步驟SI I,接收對共享資源的控制指令;
步驟S12,解析所述控制指令,獲取多個需操作的共享資源;
步驟S13,當(dāng)所述多個需操作的共享資源都處于解鎖狀態(tài),則鎖定所有所述需操作 的共享資源;
步驟S14,在所有所述需操作的共享資源被鎖定后,執(zhí)行所述控制指令。
進一步,所述對共享資源的控制方法還包括在執(zhí)行完所述控制指令后,對被鎖定 的共享資源進行解鎖。
下面結(jié)合實施例及圖3和圖4對本發(fā)明技術(shù)方案進行詳細(xì)說明。
如圖3所示,首先執(zhí)行步驟S21,配置資源池。在系統(tǒng)初始化時,可以為所有的共享 資源配置一塊存儲區(qū)域作為資源池,存儲區(qū)域中的每個存儲單元(資源單元)分別存儲一個 共享資源,并且建立共享資源與存儲單元地址的對應(yīng)關(guān)系,當(dāng)應(yīng)用要調(diào)用某一共享資源時, 可以通過所述對應(yīng)關(guān)系確定存儲該共享資源的資源單元。資源池的結(jié)構(gòu)可以是矩陣型,例 如圖4所示的二維矩陣,相關(guān)聯(lián)的共享資源可以存儲在同一行或者同一列,例如,同一行的 共享資源關(guān)聯(lián)于同一用戶或賬戶,同一列的共享資源的類型相同。需要說明的是,圖4僅為 舉例,在其他實施例中,資源池可以是其他任意行數(shù)和列數(shù)的二維矩陣,也可以是一維矩陣 或其他多維矩陣。
接著執(zhí)行步驟S22,解析接收到的對共享資源的控制指令,獲取需操作的共享資源。以下以所接收的控制指令為對共享資源Z21和Z23執(zhí)行修改操作為例進行說明。執(zhí)行步驟S23,判斷共享資源Z21是否鎖定,若是則執(zhí)行步驟S24,若否則執(zhí)行步驟S25。步驟S24,判斷等待時間是否超過預(yù)定時間,若是則加鎖失敗,結(jié)束;若否則返回步驟S23。本實施例中,所述預(yù)定時間可以設(shè)為15分鐘。步驟S25,判斷共享資源Z23是否鎖定,若是則執(zhí)行步驟S26,若否則執(zhí)行步驟S27。步驟S26,判斷等待時間是否超過預(yù)定時間,若是則加鎖失敗,結(jié)束;若否則返回步驟S25。步驟S27,對共享資源Z21和Z23加鎖。具體實施時,可以對存儲共享資源的Z21和Z23的資源單元設(shè)置標(biāo)志位,禁止其他應(yīng)用對共享資源Z21和Z23進行操作。接著執(zhí)行步驟S28,對共享資源Z21和Z23執(zhí)行修改操作。具體地,從資源單元中讀取共享資源Z21和Z23并執(zhí)行相應(yīng)地運算,將運算結(jié)果更新至對應(yīng)的資源單元中。接著執(zhí)行步驟S29,對共享資源Z21和Z23解鎖,然后結(jié)束。在其他實施例中,由于共享資源Z21和Z23存儲在同一行,可以批量鎖定第二行資源單元中的所有共享資源,即鎖定存儲所述需操作的共享資源的資源單元所在行的所有資源單元中的共享資源。這樣在列數(shù)不確定的情況下,鎖定一行共享資源即可鎖定任意列中對應(yīng)的行。具體地,依次判斷共享資源Z21、Z22、Z23、Z24和Z25是否被鎖定,只要其中有一個共享資源處于鎖定狀態(tài)則等待其解鎖;當(dāng)共享資源Z21、Z22、Z23、Z24和Z25都處于解鎖狀態(tài),再對共享資源Z21、Z22、Z23、Z24和Z25加鎖;然后執(zhí)行修改共享資源Z21和Z23的操作,操作完成后解鎖共享資源221、222、223、224和225。此外,也可以鎖定共享資源Z21所在列的所有共享資源和共享資源Z23所在列的所有共享資源。這樣在行數(shù)不確定的情況下,鎖定一個列即可鎖定任意行中對應(yīng)的列。圖5是本發(fā)明技術(shù)方案的對共享資源的控制方法的另一實施例流程圖,與圖3所示的流程相比,本實施例的控制流程少了在確定共享資源鎖定后判斷等待時間是否超過預(yù)定時間的步驟(如步驟S24和S26),也就是說,當(dāng)共享資源被鎖定時持續(xù)等待直至該共享資源被解鎖。本領(lǐng)域技術(shù)人員可以理解,上述實施例的全部或部分是可以通過程序來指令相關(guān)的硬件來完成,所述的程序可以存儲于計算機可讀存儲介質(zhì)中,所述存儲介質(zhì)可以是ROM、RAM、磁碟、光盤等。下面以圖3所示的流程為例,再舉一對共享資源執(zhí)行并發(fā)性操作的具體實例,當(dāng)操作Al需要使用共享資源Z21和Z23,操作A2需要使用Z21、Z22和Z23 進程Al (對應(yīng)于操作Al)調(diào)用進程B (對共享資源的加鎖進程)對共享資源Z21和Z23加鎖;進程B判斷共享資源Z21和Z23均未被鎖定后鎖定共享資源Z21和Z23,然后向進程Al返回加鎖成功的消息;進程Al接收到加鎖成功的消息后對共享資源Z21和Z23進行操作,操作完成后調(diào)用進程C (對共享資源的解鎖進程)對共享資源Z21和Z23解鎖。在進程Al對共享資源Z21和Z23進行操作的過程中,共享資源Z21和Z23被鎖定,進程A2 (對應(yīng)于操作A2)調(diào)用進程B對共享資源Z21、Z22和Z23加鎖;進程B判斷出共享資源Z21和Z23被鎖定,則不對共享資源Z21、Z22和Z23進行鎖定;若在預(yù)定時間內(nèi),共享資源Z21和Z23未解鎖,即進程Al的操作未完成,則進程B向進程A2返回加鎖失敗的 消息,進程A2不執(zhí)行控制操作;若在預(yù)定時間內(nèi),進程C對共享資源Z21和Z23解鎖,即進 程Al的操作完成,若此時共享資源Z22也處于解鎖狀態(tài),則進程B對共享資源Z21、Z22和 Z23進行加鎖,并向進程A2返回加鎖成功的消息;進程A2接收到加鎖成功的消息后對共享 資源Z21、Z22和Z23進行操作,操作完成后調(diào)用進程C對共享資源Z21、Z22和Z23解鎖。
由上述實例可見,進程B根據(jù)共享資源是否鎖定的判斷結(jié)果,對需操作的共享資 源或者全部鎖,或者全部不鎖,這樣就避免了并發(fā)執(zhí)行的進程Al和進程A2按不同順序逐個 鎖定共享資源而可能發(fā)生相互等待,無法加鎖也無法解鎖的問題。
本發(fā)明雖然已以較佳實施例公開如上,但其并不是用來限定本發(fā)明,任何本領(lǐng)域 技術(shù)人員在不脫離本發(fā)明的精神和范圍內(nèi),都可以利用上述揭示的方法和技術(shù)內(nèi)容對本發(fā) 明技術(shù)方案做出可能的變動和修改,因此,凡是未脫離本發(fā)明技術(shù)方案的內(nèi)容,依據(jù)本發(fā)明 的技術(shù)實質(zhì)對以上實施例所作的任何簡單修改、等同變化及修飾,均屬于本發(fā)明技術(shù)方案 的保護范圍。
權(quán)利要求
1.一種對共享資源的加鎖方法,其特征在于,包括 接收對共享資源的控制指令; 解析所述控制指令,獲取多個需操作的共享資源; 當(dāng)所述多個需操作的共享資源都處于解鎖狀態(tài),則鎖定所有所述需操作的共享資源。
2.根據(jù)權(quán)利要求1所述的對共享資源的加鎖方法,其特征在于,還包括當(dāng)所述多個需操作的共享資源中有處于鎖定狀態(tài)的共享資源,則等待所述處于鎖定狀態(tài)的共享資源解鎖后,鎖定所有需操作的共享資源。
3.根據(jù)權(quán)利要求2所述的對共享資源的加鎖方法,其特征在于,當(dāng)所述等待的時間超過預(yù)定時間,則確定對所述多個需操作的共享資源的加鎖失敗。
4.根據(jù)權(quán)利要求1所述的對共享資源的加鎖方法,其特征在于,還包括預(yù)先配置資源池,所述資源池包括多個資源單元,分別用于存儲所述共享資源。
5.根據(jù)權(quán)利要求1所述的對共享資源的加鎖方法,其特征在于,所述資源池具有矩陣型結(jié)構(gòu),鎖定所有需操作的共享資源包括鎖定存儲所述需操作的共享資源的資源單元所在行的所有資源單元中的共享資源。
6.根據(jù)權(quán)利要求1所述的對共享資源的加鎖方法,其特征在于,所述資源池具有矩陣型結(jié)構(gòu),鎖定所有需操作的共享資源包括鎖定存儲所述需操作的共享資源的資源單元所在列的所有資源單元中的共享資源。
7.一種對共享資源的控制方法,其特征在于,包括 權(quán)利要求1至6任一項所述的對共享資源的鎖定方法; 在所有所述需操作的共享資源被鎖定后,執(zhí)行所述控制指令。
8.根據(jù)權(quán)利要求7所述的對共享資源的控制方法,其特征在于,還包括在執(zhí)行完所述控制指令后,對被鎖定的共享資源進行解鎖。
9.一種對共享資源的加鎖裝置,其特征在于,包括 接收單元,適于接收對共享資源的控制指令; 解析單元,適于解析所述控制指令,獲取多個需操作的共享資源; 加鎖單元,適于當(dāng)所述多個需操作的共享資源都處于解鎖狀態(tài),則鎖定所有所述需操作的共享資源。
10.根據(jù)權(quán)利要求9所述的對共享資源的加鎖裝置,其特征在于,所述加鎖單元還適于當(dāng)所述多個需操作的共享資源中有處于鎖定狀態(tài)的共享資源,則等待所述處于鎖定狀態(tài)的共享資源解鎖后,鎖定所有需操作的共享資源。
11.根據(jù)權(quán)利要求10所述的對共享資源的加鎖裝置,其特征在于,所述加鎖單元還適于當(dāng)所述等待的時間超過預(yù)定時間,則確定對所述多個需操作的共享資源的加鎖失敗。
12.根據(jù)權(quán)利要求9所述的對共享資源的加鎖裝置,其特征在于,還包括配置單元,適于預(yù)先配置資源池,所述資源池包括多個資源單元,分別用于存儲所述共享資源。
13.根據(jù)權(quán)利要求9所述的對共享資源的加鎖裝置,其特征在于,所述資源池具有矩陣型結(jié)構(gòu),所述加鎖單元鎖定所有需操作的共享資源是指鎖定存儲所述需操作的共享資源的資源單元所在行的所有資源單元中的共享資源。
14.根據(jù)權(quán)利要求9所述的對共享資源的加鎖裝置,其特征在于,所述資源池具有矩陣型結(jié)構(gòu),所述加鎖單元鎖定所有需操作的共享資源是指鎖定存儲所述需操作的共享資源的資源單元所在列的所有資源單元中的共享資源。
15.一種對共享資源的控制裝置,其特征在于,包括權(quán)利要求9至14任一項所述的對共享資源的鎖定裝置;執(zhí)行單元,適于在所有所述需操作的共享資源被鎖定后,執(zhí)行所述控制指令。
16.根據(jù)權(quán)利要求15所述的對共享資源的控制裝置,其特征在于,還包括解鎖單元, 適于在執(zhí)行完所述控制指令后,對被鎖定的共享資源進行解鎖。
全文摘要
一種對共享資源的加鎖、控制方法和裝置,所述加鎖方法包括接收對共享資源的控制指令;解析所述控制指令,獲取多個需操作的共享資源;當(dāng)所述多個需操作的共享資源都處于解鎖狀態(tài),則鎖定所有所述需操作的共享資源。本發(fā)明技術(shù)方案避免了死鎖問題,提高了并發(fā)性執(zhí)行操作的準(zhǔn)確率和效率。
文檔編號G06F9/46GK103064729SQ201210557310
公開日2013年4月24日 申請日期2012年12月19日 優(yōu)先權(quán)日2012年12月19日
發(fā)明者虞鋼 申請人:上海西本網(wǎng)絡(luò)科技有限公司