亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種電信網(wǎng)管系統(tǒng)中對被管對象加鎖的方法

文檔序號:7766478閱讀:327來源:國知局
專利名稱:一種電信網(wǎng)管系統(tǒng)中對被管對象加鎖的方法
技術領域
本發(fā)明涉及對于并發(fā)訪問的數(shù)據(jù)管理的安全技術領域,特別是涉及電信網(wǎng)管系統(tǒng)中對被管對象加鎖的方法。
背景技術
在網(wǎng)管系統(tǒng)中,核心是對被管對象(MO,Managed Object)進行各種操作,隨著計算機技術的發(fā)展,這種操作一般是多用戶并發(fā)進行的,如多個用戶同時對同一資源提出請求,例如閱讀、修改或刪除等。目前的電信網(wǎng)管系統(tǒng),將采集到的對MO操作的有關信息保存在網(wǎng)管數(shù)據(jù)庫中。由于關系型數(shù)據(jù)庫的技術成熟,性能和穩(wěn)定性好,通常網(wǎng)管采用關系型數(shù)據(jù)庫進行數(shù)據(jù)的保存。使用關系型數(shù)據(jù)庫,在用戶進行MO的操作時,利用關系型數(shù)據(jù)庫具備的事務機制來保證數(shù)據(jù)的安全性和完整性。
事務機制在多用戶長時間類型的程序中,很容易發(fā)生用戶操作的并發(fā)性。
若采用短事務機制,它是確定于提交或者回滾這樣一個時間點,因此無法實現(xiàn)對于資源的主動性鎖定。如圖1舉例說明,用戶A在確定一條路徑時,程序需消耗五分鐘做各種選擇,設這條路徑要經(jīng)過10個網(wǎng)元,在五分鐘后提交的瞬間,在這個時間點開始事務機制,才發(fā)現(xiàn)10個網(wǎng)元中的某個網(wǎng)元被另一個用戶B從網(wǎng)管上刪除了,而導致操作失敗。因此,短事務機制難以保證在用戶A做這類操作的時候,相關聯(lián)的數(shù)據(jù)不被其他用戶進行刪除或修改。
若使用高級別的事務隔離機制并使得事務延續(xù)長時間,仍以上例,如使用嚴格機制的事務隔離并讓事務在五分鐘中一直延續(xù),則B用戶可能無法進行任何操作,降低了網(wǎng)管在多用戶并發(fā)操作情況下的性能。
同時,對于關系型數(shù)據(jù)庫,無法預先知道在事務存在或者對數(shù)據(jù)庫操作期間所影響的資源范圍是多少,如行級別、頁級別或表格級別。因此從編程者的角度來說,就無法考慮周全其程序事務存在或者對數(shù)據(jù)庫操作期間所影響的資源范圍,人為的限制了網(wǎng)管在多用戶并發(fā)操作情況下的性能。
同時,由于無法實現(xiàn)用戶在某個時間段對必需資源的獨占式使用,即所述的鎖定服務,在做涉及到多個表的關聯(lián)操作的時候,若兩個或兩個以上的用戶一起在等待被對方占據(jù)的資源,而且必需得到這些資源才能將自己的任務進行下去的時候,就形成了死鎖現(xiàn)象。

發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種電信網(wǎng)管系統(tǒng)中對被管對象加鎖的方法,應用本發(fā)明的方法,使得用戶在操作MO時,保證了其在某個時間段對必需資源的獨占式使用,實現(xiàn)對被管對象的鎖定。
實現(xiàn)本發(fā)明,需要以下步驟1、對被管對象(MO)進行操作時,通過鎖定服務系統(tǒng)的MO加解鎖接口或通過調(diào)用被管對象事例樹的MO管理接口調(diào)用鎖定服務系統(tǒng),鎖定服務系統(tǒng)根據(jù)此操作,生成與之相應的加鎖任務;2、根據(jù)生成的加鎖任務,取得此任務要鎖定的對象相關聯(lián)的所有父、子節(jié)點的各個節(jié)點應出現(xiàn)的鎖的狀態(tài);3、判斷已經(jīng)加鎖的任務和內(nèi)部任務列表中的各個任務是否符合此任務的子節(jié)點和父節(jié)點的各個節(jié)點應出現(xiàn)的鎖的狀態(tài),若符合則對當前任務進行加鎖,返回結(jié)束;否則執(zhí)行步驟D;4、將本任務填充入內(nèi)部任務列表進行保存,同時提交線程阻塞,使該任務對應的線程處于等待狀態(tài)。
其中該方法進一步包括有已加鎖狀態(tài)的任務被釋放時,喚醒內(nèi)部任務列表中的任務,將喚醒的任務作為加鎖任務。且該任務加鎖成功時,該任務同時從內(nèi)部任務列表中刪除。
其中該方法進一步包括對單個MO讀操作,相應的生成的加鎖任務為對單個MO讀鎖定;對單個MO寫操作,相應的生成的加鎖任務為對單個MO寫鎖定;對以某個節(jié)點的所有子節(jié)點讀操作,相應的生成的加鎖任務為對以某個節(jié)點的所有子節(jié)點讀鎖定;對以某個節(jié)點的所有子節(jié)點寫操作,相應的生成的加鎖任務為對以某個節(jié)點的所有子節(jié)點寫鎖定;以某個節(jié)點的所有子節(jié)點刪除操作,相應的生成的加鎖任務為以某個節(jié)點的所有子節(jié)點刪除鎖定;對多個獨立關系的MO讀操作,相應的生成的加鎖任務為對多個獨立關系的MO讀鎖定;對多個獨立關系的MO寫操作,相應的生成的加鎖任務為對多個獨立關系的MO寫鎖定;對多個獨立關系的MO刪除操作,相應的生成的加鎖任務為對多個獨立關系的MO刪除鎖定。其中,讀鎖定要求允許并發(fā)多個用戶對鎖定的對象進行讀取操作,但不能進行寫、刪除操作。寫鎖定要求不允許其它用戶對鎖定的對象進行讀、寫或刪除操作。刪除鎖定要求不允許其它用戶對鎖定的對象,以鎖定的對象為根的被管對象樹中的任何一個被管對象進行讀、寫或刪除操作。
其中該方法進一步包括所述的內(nèi)部任務列表是采用兩級排序列表結(jié)構(gòu)的表,其中一級列表為等待級任務隊列,等待任務通過first指針指示開頭,其余任務通過next指針進行連接;另一級列表為休眠級任務隊列,各休眠任務通過stack指針進行連接。
相應的,對內(nèi)部任務列表填充方法進一步包括1、若當前任務與已處于加鎖狀態(tài)的任務相沖突,將其填入內(nèi)部任務列表中的等待級任務隊列,用next指針進行連接;新加入的任務放在隊尾,每個任務依次加一個序列號;2、若當前任務與內(nèi)部任務列表中已有的等待任務相沖突,將其填入內(nèi)部任務列表中的休眠級任務隊列,用stack指針進行連接;新加入的任務放在隊尾,每個任務依次加一個序列號。
由上述方法可以看出,本發(fā)明使得用戶在某個時間段對于必需的資源進行獨占式使用,從而在多用戶并發(fā)操作的情況下,通過本發(fā)明所述的方法實現(xiàn)對MO的鎖定,防范了死鎖的發(fā)生,從而保證了網(wǎng)管數(shù)據(jù)庫的安全性和完整性,提高了電信網(wǎng)管的可靠性。


圖1為采用事務機制的長時間事務類型程序中的多用戶并行操作的相互影響示意圖。
圖2為本發(fā)明的總技術方案的示意圖。
圖3為本發(fā)明的鎖定的任務列表的兩級鏈表示意圖。
圖4為加解鎖時任務列表中兩級鏈表指針調(diào)整示意圖,由圖4-1、圖4-2、圖4-3組成。
圖5為實施例的加鎖的流程圖。
具體實施例方式
本發(fā)明所述的加鎖是指某任務被執(zhí)行時,與此任務有沖突的其它任務處于被禁止執(zhí)行的狀態(tài)。所述的解鎖是指正在執(zhí)行的任務結(jié)束后,相應的處于被禁止執(zhí)行的任務恢復到可以被執(zhí)行的狀態(tài)。
圖2是總技術方案的示意圖。如圖,用戶對MO進行操作的時候,會自動的調(diào)用被管對象事例樹(MIT)的MO管理接口,而后MIT根據(jù)用戶操作的語義,如讀、寫、創(chuàng)建、刪除等,調(diào)用鎖定服務系統(tǒng)(LockManager)的MO加解鎖接口,實現(xiàn)LockManager對此操作的加解鎖。MIT用于向外提供鎖定服務的接口,和具體協(xié)議無關;LockManager提供了一套完整的加解鎖方案,并提供了供MIT調(diào)用的加解鎖的接口,用于對MO操作的鎖定。同時,LockManager的MO加解鎖接口也可以由用戶直接調(diào)用。如用戶A的調(diào)用過程,用戶A調(diào)用MIT的MO管理接口對MO進行確定的操作,如讀、寫、修改、創(chuàng)建、刪除等,MIT根據(jù)這些語義自動的調(diào)用LockManager的MO加解鎖接口;又如用戶B的調(diào)用過程,當用戶B進行操作時,如先鎖定一批MO然后逐個進行操作,直接調(diào)用LockManager的MO加解鎖接口進行對MO的加鎖。在維護檢測時調(diào)用鎖狀態(tài)鏡像接口對鎖的狀態(tài)進行讀取。
由X.732建議可知,電信網(wǎng)管中的MO是以包容關系存在,所以可認為MIT是由各個MO的實例所構(gòu)成的層次形狀的實例樹,對MO的應用等操作的過程抽象為就是調(diào)用LockManager對MIT某些節(jié)點進行加、解鎖的過程。概括加鎖MO能出現(xiàn)的狀態(tài),可以得到鎖定狀態(tài)有1、對單個MO讀鎖定(LockMORead);2、對單個MO寫鎖定(LockMOWrite);3、對某個節(jié)點的所有子節(jié)點(Children)讀鎖定,簡稱讀Children鎖(LockChildrenRead);4、對某個節(jié)點的所有子節(jié)點寫鎖定,簡稱寫Children鎖(LockChildrenWrite);5、對某個節(jié)點的所有子節(jié)點刪除鎖定(LockChildrenDelete);6、對多個獨立關系的MO讀鎖定(LockMultiMORead);7、對多個獨立關系的MO寫鎖定(LockMultiMOWrite);8、對多個獨立關系的MO刪除鎖定(LockMultiMODelete)。
其中,讀鎖定要求允許并發(fā)多個用戶對鎖定的對象進行讀取操作,但不能進行寫、刪除操作。寫鎖定要求不允許其它用戶對鎖定的對象進行讀、寫或刪除操作。刪除鎖定要求不允許其它用戶對鎖定的對象,以鎖定的對象為根的被管對象樹中的任何一個被管對象進行讀、寫或刪除操作。
在電信網(wǎng)管中實際的MO的鎖定情況中,同時訪問MO的線程數(shù)目是有限的,最多是幾十個;MO的鎖定請求對應的MO個數(shù)可能是大量的,且這些請求要作為一個原子操作返回;要求一個訪問線程在提交一個鎖定請求后處于鎖定狀態(tài)時不能再提交下一個鎖定請求。若定義左分叉(LFork)是從要鎖定的節(jié)點但不包括該節(jié)點開始遍歷父系直到根節(jié)點路徑中各個節(jié)點的鎖的情況,定義右分叉(RFork)是以該節(jié)點為根且包括該節(jié)點的整個子樹中的各個節(jié)點的鎖的情況,則在上述各種鎖發(fā)生時其相關聯(lián)的所有節(jié)點的情況均可以歸結(jié)為LFork和RFork。則在上述八種MO鎖定狀態(tài)下,進行某種加鎖操作可以成功的時候,對應的其相關各個節(jié)點的鎖應存在的狀態(tài)如下1、LockMORead成功的條件LFork所有的父MO不能處于LockChildrenWrite或LockChildrenDelete狀態(tài);RFork此MO自身不能處于LockChildrenDelete或LockMOWrite狀態(tài)。
2、LockMOWrite成功的條件LFork所有的父MO不能處于LockChildrenWrite、LockChildrenRead或LockChildrenDelete狀態(tài);RFork此MO自身不能處于LockChildrenDelete、LockMOWrite或LockMORead狀態(tài)。
3、LockChildrenRead成功的條件LFork所有的父MO不能處于LockChildrenWrite或LockChildrenDelete狀態(tài);RFork以此MO為根的子樹中每個MO,不能處于LockMOWrite、LockChildrenWrite或LockChildrenDelete狀態(tài)。
4、LockChildrenWrite成功的條件LFork所有的父MO不能處于LockChildrenWrite、LockChildrenDelete、LockChildrenRead狀態(tài);RFork以此MO為根的子樹中每個MO,不能處于LockMORead、LockMOWrite、LockChildrenRead、LockChildrenWrite或LockChildrenDelete狀態(tài)。
5、LockChildrenDelete成功的條件LFork所有的父MO不能處于LockChildrenWrite、LockChildrenDelete或LockChildrenRead狀態(tài);
RFork以此MO為根的子樹中每個MO,不能處于LockMORead、LockMOWrite、LockChildrenRead、LockChildrenWrite或LockChildrenDelete狀態(tài)。
6、LockMultiMORead成功的條件LFork要鎖定的多個獨立關系的MO的每一個MO的所有父MO不能處于LockChildrenWrite或LockChildrenDelete狀態(tài);RFork要鎖定的多個獨立關系的MO的每一個MO自身不能處于LockChildrenDelete或LockMOWrite狀態(tài)。
7、LockMultiMOWrite成功的條件LFork要鎖定的多個獨立關系的MO的每一個MO的所有父MO不能處于LockChildrenWrite、LockChildrenRead或LockChildrenDelete狀態(tài);RFork要鎖定的多個獨立關系的MO的每一個MO自身不能處于LockChildrenDelete、LockMOWrite或LockMORead狀態(tài)。
8、LockMultiMODelete成功的條件LFork要鎖定的多個獨立關系的MO的每一個MO的所有父MO不能處于LockChildrenWrite、LockChildrenDelete或LockChildrenRead狀態(tài);RFork要鎖定的多個獨立關系的MO的每一個MO的以自身為根的子樹中每個MO,不能處于LockMORead、LockMOWrite、LockChildrenRead、LockChildrenWrite或LockChildrenDelete狀態(tài)。
對于上述八種MO的鎖定狀態(tài),可分析出其相關的父節(jié)點和子節(jié)點的鎖的狀態(tài)在不滿足條件的情況下,加鎖必然失敗,也就是說,上述八點歸納了八種鎖定任務能成功的必要條件。
對MO的操作加鎖的過程就是通過對需加鎖節(jié)點各個父節(jié)點和子節(jié)點的遍歷得到相關的所有鎖的狀態(tài),來比較判斷此節(jié)點是否可以進行加鎖的過程。
本發(fā)明將由于某任務的存在,而不能獲取鎖的當前任務,即將加鎖失敗的任務填充在一個任務列表(LockInfoList)中,進行保存。如圖3所示,LockInfoList是一個兩級排序鏈表,通過next和stack指針共同進行排序。LockInfoList的填充方法如下1、若當前任務與已處于加鎖狀態(tài)的任務相沖突,而無法獲得鎖,將其依次填入LockInfoList,在LockInfoList中,通過first指針指示開頭,其余通過next指針連接起來;新加入的任務放在隊尾,每個任務依次加一個序列號,序列號循環(huán)使用。這種任務稱為“等待任務”,在圖3中用白色表格表示出來;2、若當前任務與LockInfoList中已有的等待任務相沖突,而無法獲得鎖,將其依次填入LockInfoList,用stack進行連接,stack指針依次順序連接指向這些“休眠”任務,next指針則跳過此任務。這種任務稱為“休眠任務”,在圖3中用灰色表格表示出來。
舉例說明有五個MOA,B,C,E四個MO相互獨立,D是C的子MO。已經(jīng)處于加鎖成功的鎖定狀態(tài)有讀A鎖(LockMORead),寫B(tài)鎖(LockMOWrite)。現(xiàn)在有以下七個加鎖請求依次順序來到1,讀B、C鎖(LockMultiMORead);2,讀E鎖(LockMORead);3,寫C童鎖(LockChildrenWrite);4,寫B(tài)鎖(LockMOWrite);5,寫A鎖(LockMOWrite);6,寫D鎖(LockMOWrite);7,刪E童鎖(LockChildrenDelete)。
由各任務的各自LFork和RFork依次與已經(jīng)加鎖的任務和LockInfoList中的任務進行比較,確定是否可以加鎖。如,讀B、C鎖的LFork和Rfork狀態(tài)中要求B不能處于寫鎖的狀態(tài),和已經(jīng)加鎖的任務寫B(tài)鎖相沖突,因此讀B、C鎖任務不能獲得鎖,填入LockInfoList。讀E鎖任務的LFork和Rfork狀態(tài)中沒有和已經(jīng)加鎖的任務和LockInfoList中的任務相沖突的,因此獲得鎖。寫C童鎖的因為LockInfoList中已經(jīng)填入讀B、C鎖任務,與之相沖突,因此寫C童鎖不能獲得鎖,填入LockInfoList,且用stack指針與讀B、C鎖連接起來。同理,各個任務依次進行加鎖判斷,結(jié)果如下
鎖定狀態(tài)的MO有讀A鎖(LockMORead)、寫B(tài)鎖(LockMOWrite)、讀E鎖(LockMORead);其他按照上述填充方法填入LockInfoList,參見圖4-1,讀B、C鎖(LockMultiMORead)、寫C童鎖(LockChildrenWrite)、寫B(tài)鎖(LockMOWrite)、寫A鎖(LockMOWrite)、寫D鎖(LockMOWrite)、刪E童鎖(LockChildrenDelete)依次填入LockInfoList中;LockInfoList中任務1、4、6處于等待狀態(tài),next指針依次指向任務1、任務4、任務6、然后在循環(huán)返回指向任務1;LockInfoList中任務2、3、5處于休眠狀態(tài),stack指針依次指向任務2、任務3、任務5。
當有已加鎖的任務釋放鎖時,依次喚醒LockInfoList中的等待任務,LockInfoList進行相應指針排序的調(diào)整,調(diào)整方法如下next指針依次順序下移,把LockInfoList中的等待任務對應的線程依次喚醒重新進行加鎖判斷。若某等待任務獲得鎖,則該任務加鎖同時將其從LockInfoList中刪除;同時檢查此任務是否連接了一些“休眠”任務,如是,則將這些“休眠”任務和其余的“等待”任務按照上面所述的LockInfoList的填充方法重新排序進行排序指針的調(diào)整。
例如上述圖4-1所示例子中已鎖定的讀A鎖(LockMORead)、寫B(tài)鎖(LockMOWrite)任務順序結(jié)束各自的線程為例,按照上述LockInfoList指針排序調(diào)整的方法,LockInfoList進行相應排序指針調(diào)整。讀A鎖(LockMORead)對應的線程執(zhí)行結(jié)束,解鎖讀A鎖(LockMORead)任務,則等待任務1、4、6依次進入加鎖判斷,由這些等待任務的各自LFork和RFork依次與已經(jīng)加鎖的任務和LockInfoList中的任務進行比較。如圖4-2,任務4加鎖出列,任務1、6仍處于等待狀態(tài),next指針依次指向任務1、任務6、任務1;stack指針依次指向任務2、任務3、任務5。
寫B(tài)鎖(LockMOWrite)對應的線程執(zhí)行結(jié)束,解鎖寫B(tài)鎖(LockMOWrite任務),任務1、6進入加鎖判斷,如圖4-3,任務1加鎖出列,因為任務1連接休眠任務,調(diào)整休眠任務和等待任務排序重新排序,由這些休眠任務的各自LFork和RFork依次與已經(jīng)加鎖的任務和LockInfoList中的任務重新進行比較,和等待任務重新進行排序。next指針依次指向任務2、任務3、任務6、任務2;stack指針依次指向任務5。從鏈表指針的調(diào)整可知,此二級鏈表防范了任務1讀B、C鎖(LockMultiMORead)和任務3寫B(tài)鎖(LockMOWrite)同時出列造成死鎖的情況。
因此,采用這種鏈表結(jié)構(gòu)和上述的填充方法可以防范在多用戶并行操作情況下死鎖的發(fā)生。
以一個MO的加鎖流程為例,參見圖5所示,對本發(fā)明的加鎖方法進一步詳細說明步驟501由對MO的操作,MIT根據(jù)用戶操作的語義,自動調(diào)用LockManager的MO加解鎖接口,使LockManager生成相應加鎖任務。如,MIT根據(jù)讀某個MO信息的命令,自動調(diào)用LockManager的MO加解鎖接口,從而使LockManager生成一個對此MO節(jié)點的加讀鎖任務,即LockMORead。
步驟502根據(jù)生成的加鎖任務,取得此任務若成功加鎖時,相關聯(lián)的所有子節(jié)點和父節(jié)點的各個節(jié)點應出現(xiàn)的狀態(tài),即取得在加鎖成功條件下,LFork和Rfork應有的狀態(tài)。
步驟503比較已經(jīng)鎖定的任務和LockInfoList中的各個任務是否符合此任務LFork和RFork的狀態(tài)要求,若符合,則說明與此任務相沖突的相關節(jié)點任務不存在,此加鎖任務能夠成功,則此任務的線程執(zhí)行下去,并加鎖返回,等此任務對應的線程結(jié)束后再進行釋放鎖;否則,說明與此任務相沖突的相關節(jié)點任務存在,加鎖失敗,執(zhí)行步驟504將任務填入LockInfoList中。
步驟504按照前文所述LockInfoList的填充方法,將此任務順序加到LockInfoList中,處于等待或休眠狀態(tài)。同時采用等待對應該線程的信號量或者直接掛起的方法提交線程阻塞,使該任務對應的線程處于等待狀態(tài)。
步驟505有其它的加鎖任務被釋放時,依次喚醒LockInfoList中符合條件的所有的等待任務,按照前文所述LockInfoList指針排序調(diào)整的方法進行相應排序指針調(diào)整。
喚醒的任務重復步驟502到505,再次進行加鎖。
加鎖的鎖定狀態(tài)不僅可針對整個MO,也可只針對MO的一種屬性,如進一步細分可以針對MO進行故障、配置、性能等某一種屬性進行鎖定。所以本發(fā)明不局限于所述的八種鎖定狀態(tài)和對應各鎖定狀態(tài)存在時所有的MO的鎖情況。如下段程序,是分別定義鎖的類型和要鎖定MO某類型屬性enum LOCKTYPE{LOCKMO,LOCKMULTI,LOCKCHILDREN,LOCKTYPEALL}enum ATTRTYPE{FLT,CFG,PFM,PTH,ATTRALL}此處不再詳敘。
本發(fā)明和具體的數(shù)據(jù)庫、具體的操作系統(tǒng)、具體的協(xié)議無關。以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種電信網(wǎng)管系統(tǒng)中被管對象的加鎖方法,其特征在于包括以下步驟A、鎖定服務系統(tǒng)根據(jù)對被管對象的操作,生成與之相應的加鎖任務;B、根據(jù)生成的加鎖任務,取得此任務要鎖定的對象相關聯(lián)的所有父、子節(jié)點的各個節(jié)點應出現(xiàn)的鎖的狀態(tài);C、判斷已經(jīng)加鎖的任務和內(nèi)部任務列表中的各個任務是否符合此任務的子節(jié)點和父節(jié)點的各個節(jié)點應出現(xiàn)的鎖的狀態(tài),若符合則對當前任務進行加鎖,返回結(jié)束;否則執(zhí)行步驟D;D、將本任務填充入內(nèi)部任務列表進行保存,同時提交線程阻塞,使該任務對應的線程處于等待狀態(tài)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于步驟A所述的生成加鎖任務的方法進一步包括有已加鎖狀態(tài)的任務被釋放時,喚醒內(nèi)部任務列表中的任務,將喚醒的任務作為加鎖任務。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于步驟A所述的鎖定服務系統(tǒng)生成加鎖任務的方法進一步包括通過鎖定服務系統(tǒng)的MO加解鎖接口調(diào)用鎖定服務系統(tǒng),或通過調(diào)用被管對象事例樹的MO管理接口調(diào)用鎖定服務系統(tǒng)。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于步驟C進一步包括若當前的加鎖任務是被喚醒的內(nèi)部任務列表中的任務,則該任務加鎖成功時,同時將該任務從內(nèi)部任務列表中刪除。
5.根據(jù)權(quán)利要求1所述的方法,其特征進一步包括A1、對單個被管對象讀操作,相應生成的加鎖任務為對單個被管對象讀鎖定;A2、對單個被管對象寫操作,相應生成的加鎖任務為對單個被管對象寫鎖定;A3、對以某個節(jié)點的所有子節(jié)點讀操作,相應生成的加鎖任務為對以某個節(jié)點的所有子節(jié)點讀鎖定;A4、對以某個節(jié)點的所有子節(jié)點寫操作,相應生成的加鎖任務為對以某個節(jié)點的所有子節(jié)點寫鎖定;A5、以某個節(jié)點的所有子節(jié)點刪除操作,相應生成的加鎖任務為以某個節(jié)點的所有子節(jié)點刪除鎖定;A6、對多個獨立關系的被管對象讀操作,相應生成的加鎖任務為對多個獨立關系的被管對象讀鎖定;A7、對多個獨立關系的被管對象寫操作,相應生成的加鎖任務為對多個獨立關系的被管對象寫鎖定;A8、對多個獨立關系的被管對象刪除操作,相應生成的加鎖任務為對多個獨立關系的被管對象刪除鎖定。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于步驟C進一步包括所述的內(nèi)部任務列表是采用兩級排序列表結(jié)構(gòu)的表,其中一級列表為等待級任務隊列,等待任務通過first指針指示開頭,其余任務通過next指針進行連接,每個任務依次加一個序列號;另一級列表為休眠級任務隊列,各休眠任務通過stack指針進行連接,每個任務依次加一個序列號。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于對內(nèi)部任務列表填充方法進一步包括D1、將新加入的任務放在內(nèi)部任務列表中任務隊列的隊尾;D2、若當前任務與已處于加鎖狀態(tài)的任務相沖突,將其填入內(nèi)部任務列表中的等待級任務隊列;D3、若當前任務與內(nèi)部任務列表中已有的等待任務相沖突,將其填入內(nèi)部任務列表中的休眠級任務隊列。
全文摘要
本發(fā)明公開了一種電信網(wǎng)管系統(tǒng)中被管對象加鎖的方法,包括以下步驟對被管對象進行操作,鎖定服務系統(tǒng)根據(jù)要操作的對象生成相應的加鎖任務;取得此任務要鎖定的對象相關聯(lián)的所有父、子節(jié)點的各個節(jié)點應出現(xiàn)的鎖的狀態(tài)并進行校驗;判斷已經(jīng)加鎖的任務和內(nèi)部任務列表中的各個任務是否有與本操作相沖突的任務存在,若沒有則對此任務進行加鎖,返回結(jié)束;否則將本任務填充入內(nèi)部任務列表,同時提交線程阻塞;等待其它的鎖定任務被釋放時,依次喚醒內(nèi)部任務列表中符合條件的任務,重新進行加鎖判斷。應用本發(fā)明的方法,在多用戶并發(fā)操作的情況下可以實現(xiàn)對被管對象的鎖定。
文檔編號H04L12/24GK1527536SQ0310504
公開日2004年9月8日 申請日期2003年3月3日 優(yōu)先權(quán)日2003年3月3日
發(fā)明者施廣宇, 郭洪志 申請人:華為技術有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1