一種共享資源的訪問方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)資源訪問技術(shù),尤其涉及一種共享資源的訪問方法及裝置。
【背景技術(shù)】
[0002]目前,安卓(Android)操作系統(tǒng)以其操作簡單且方便快捷的特性,越來越為用戶所接受,已普遍應(yīng)用于用戶的工作以及生活中,在Android操作系統(tǒng)中,存在許多共享資源,用戶之間通過資源共享,可以實(shí)現(xiàn)資源的最佳利用。對于共享資源,需要避免共享資源的并發(fā)訪問,即避免多個(gè)線程或進(jìn)程同時(shí)訪問和操作共享資源而引起的各線程或進(jìn)程之間相互覆蓋共享資源,導(dǎo)致被訪問的共享資源處于不一致的狀態(tài)。例如,多個(gè)客戶端不能對Android操作系統(tǒng)的共享資源進(jìn)行一些特定的同時(shí)操作,舉例來說,在客戶端上傳一共享文件時(shí),其他客戶端不能同時(shí)執(zhí)行刪除該共享文件的操作,再例如,在一客戶端執(zhí)行共享文件的寫操作時(shí),其他客戶端不能同時(shí)執(zhí)行該共享文件的寫操作。
[0003]為了避免共享資源的訪問沖突,現(xiàn)有技術(shù)中一般基于共享資源的數(shù)據(jù)格式,采用Java技術(shù),通過Native層的C++代碼進(jìn)行進(jìn)程間互斥,以實(shí)現(xiàn)進(jìn)程間互斥,從而實(shí)現(xiàn)客戶端之間訪問操作的互斥,即通過在第一共享資源中設(shè)置訪問互斥條件,當(dāng)某一客戶端執(zhí)行第一訪問操作以訪問第一共享資源時(shí),查詢該第一共享資源中設(shè)置的訪問互斥條件,如果當(dāng)前待訪問的客戶端的第一訪問操作與設(shè)置的第一共享資源訪問互斥條件相匹配,則拒絕該當(dāng)前待訪問的客戶端的訪問請求。這樣,可以保證第一共享資源在某一時(shí)刻只能被一客戶端進(jìn)行訪問操作,如果有其他客戶端請求訪問,且該訪問為互斥訪問,則拒絕當(dāng)前請求訪問該第一共享資源的其他客戶端。
[0004]但上述共享資源的訪問方法,由于需要與共享資源數(shù)據(jù)格式相兼容,只能通過Native層的C++代碼進(jìn)行進(jìn)程間互斥,需要使用c++的函數(shù)庫,即共享庫(SO,SharedObject)文件進(jìn)行代碼編程,在接收到共享資源訪問請求后,再從共享資源中導(dǎo)出共享資源訪問互斥條件進(jìn)行比較,由于訪問互斥條件作為共享資源的一部分并將隨同共享資源下發(fā)至客戶端,從而增大了共享資源對應(yīng)的Android安裝包(APK,Android Package)的大小,增加了所需的存儲(chǔ)空間,降低了共享資源的訪問速度,使得下載共享資源所需的時(shí)間延長。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明實(shí)施例提供一種共享資源的訪問方法及裝置,提升共享資源的訪問速度。
[0006]為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案:
[0007]第一方面,本發(fā)明實(shí)施例提供一種共享資源的訪問方法,包括:
[0008]接收訪問共享資源的請求;
[0009]在預(yù)先設(shè)置的用于標(biāo)記所述共享資源的訪問互斥文件中,查詢所述訪問共享資源的請求中包含的訪問共享資源的操作與當(dāng)前訪問所述共享資源的操作是否為預(yù)先設(shè)置的互斥操作;
[0010]如果否,接受所述訪問共享資源的請求以對所述共享資源進(jìn)行訪問,如果是,拒絕所述訪問共享資源的請求。
[0011]作為另一實(shí)施例,在所述接收訪問共享資源的請求之前,所述方法進(jìn)一步包括:
[0012]預(yù)先在設(shè)置的存儲(chǔ)磁盤中構(gòu)建所述訪問互斥文件,并在用于接收訪問共享資源的請求對應(yīng)的處理器中,設(shè)置構(gòu)建的所述訪問互斥文件所在存儲(chǔ)路徑與共享資源的映射關(guān)系O
[0013]作為另一實(shí)施例,所述查詢所述訪問共享資源的請求中包含的訪問共享資源的操作與當(dāng)前訪問所述共享資源的操作是否為預(yù)先設(shè)置的互斥操作;如果否,接受所述訪問共享資源的請求,包括:
[0014]查詢是否預(yù)先存儲(chǔ)有用于標(biāo)記所述共享資源的訪問互斥文件,
[0015]如果未存儲(chǔ)有,接受所述訪問共享資源的請求,創(chuàng)建用于標(biāo)記所述共享資源的訪問互斥文件,創(chuàng)建的所述訪問互斥文件中包含所述訪問共享資源的請求中包含的訪問共享資源的操作對應(yīng)的互斥操作;
[0016]如果存儲(chǔ)有,獲取存儲(chǔ)的訪問互斥文件中包含的互斥操作,判斷所述訪問共享資源的請求中包含的訪問共享資源的操作是否為所述互斥操作之一,如果否,接受所述訪問共享資源的請求,并將所述訪問共享資源的請求中包含的訪問共享資源的操作對應(yīng)的互斥操作添加到所述存儲(chǔ)的訪問互斥文件中。
[0017]作為另一實(shí)施例,所述方法進(jìn)一步包括:
[0018]如果判斷所述訪問共享資源的請求中包含的訪問共享資源的操作為所述互斥操作之一,拒絕所述訪問共享資源的請求。
[0019]在所述如果判斷所述訪問共享資源的請求中包含的訪問共享資源的操作為所述互斥操作之一之后,拒絕所述訪問共享資源的請求之前,所述方法進(jìn)一步包括:
[0020]查詢存儲(chǔ)的訪問互斥文件中包含的訪問共享資源的操作是否被操作系統(tǒng)殺死,如果是,接受所述訪問共享資源的請求,刪除所述存儲(chǔ)的訪問互斥文件,創(chuàng)建用于標(biāo)記所述共享資源的訪問互斥文件,所述訪問互斥文件中包含述訪問共享資源的請求中包含的訪問共享資源的操作對應(yīng)的互斥操作;如果否,執(zhí)行所述拒絕所述訪問共享資源的請求的步驟。
[0021]作為另一實(shí)施例,所述在如果否之后,執(zhí)行所述拒絕所述訪問共享資源的請求的步驟之前,所述方法進(jìn)一步包括:
[0022]比較存儲(chǔ)的訪問互斥文件中包含的訪問共享資源的操作對應(yīng)的第一優(yōu)先級別以及所述訪問共享資源的請求中包含的訪問共享資源的操作對應(yīng)的第二優(yōu)先級;
[0023]如果第二優(yōu)先級的優(yōu)先級別高于第一優(yōu)先級的優(yōu)先級別,觸發(fā)所述操作系統(tǒng)終止所述第一優(yōu)先級對應(yīng)的操作,執(zhí)行所述接受所述訪問共享資源的請求,刪除所述存儲(chǔ)的訪問互斥文件,創(chuàng)建用于標(biāo)記所述共享資源的訪問互斥文件的步驟,如果所述第二優(yōu)先級的優(yōu)先級別低于或者等于所述第一優(yōu)先級的優(yōu)先級別,執(zhí)行所述拒絕所述訪問共享資源的請求的步驟。
[0024]作為另一實(shí)施例,所述在如果否之后,執(zhí)行所述拒絕所述訪問共享資源的請求的步驟之前,所述方法進(jìn)一步包括:
[0025]查詢存儲(chǔ)的訪問互斥文件中包含的訪問共享資源的操作對應(yīng)的操作時(shí)間是否超過預(yù)先設(shè)置的可操作時(shí)間閾值;
[0026]如果是,觸發(fā)所述操作系統(tǒng)終止所述存儲(chǔ)的訪問互斥文件中包含的訪問共享資源的操作,執(zhí)行所述接受所述訪問共享資源的請求,刪除所述存儲(chǔ)的訪問互斥文件,創(chuàng)建用于標(biāo)記所述共享資源的訪問互斥文件的步驟,如果否,執(zhí)行所述拒絕所述訪問共享資源的請求的步驟。
[0027]作為另一實(shí)施例,在接受所述訪問共享資源的請求之后,所述方法進(jìn)一步包括:
[0028]在所述訪問共享資源的請求中包含的訪問共享資源的操作退出后,刪除創(chuàng)建的用于標(biāo)記所述共享資源的訪問互斥文件。
[0029]作為另一實(shí)施例,所述查詢所述訪問共享資源的請求中包含的訪問共享資源的操作與當(dāng)前訪問所述共享資源的操作是否為預(yù)先設(shè)置的互斥操作;如果否,接受所述訪問共享資源的請求,包括:
[0030]查詢并獲取所述共享資源文件對應(yīng)的應(yīng)用安裝的用于標(biāo)識互斥操作的內(nèi)容提供者的互斥狀態(tài),如果所述訪問共享資源的請求中包含的訪問共享資源的操作不為互斥狀態(tài)包含的互斥操作之一,接受所述訪問共享資源的請求。
[0031]第二方面,本發(fā)明實(shí)施例提供一種共享資源的訪問裝置,所述裝置包括:查詢模塊、共享資源訪問模塊以及拒絕訪問模塊,其中,
[0032]所述查詢模塊,用于接收訪問共享資源的請求,在預(yù)先設(shè)置的用于標(biāo)記所述共享資源的訪問互斥文件中,查詢所述訪問共享資源的請求中包含的訪問共享資源的操作與當(dāng)前訪問所述共享資源的操作是否為預(yù)先設(shè)置的互斥操作,如果是,通知所述共享資源訪問模塊,如果否,通知所述拒絕訪問模塊;
[0033]所述共享資源訪問模塊,用于在接收到所述查詢模塊發(fā)送的通知之后,接受所述訪問共享資源的請求以對所述共享資源進(jìn)行訪問;
[0034]所述拒絕訪問模塊,用于在接收到所述查詢模塊發(fā)送的通知之后,拒絕所述訪問共享資源的請求。
[0035]作為另一實(shí)施例,所述裝置進(jìn)一步包括:
[0036]映射關(guān)系構(gòu)建模塊,用于預(yù)先在設(shè)置的存儲(chǔ)磁盤中構(gòu)建所述訪問互斥文件,并在用于接收訪問共享資源的請求對應(yīng)的處理器中,設(shè)置構(gòu)建的所述訪問互斥文件所在存儲(chǔ)路徑與共享資源的映射關(guān)系。
[0037]作為另一實(shí)施例,所述查詢模塊包括:接收單元、查詢單元、第一處理單元以及第二處理單元,其中,
[0038]所述接收單元,用于接收訪問共享資源的請求;
[0039]所述查詢單元,用于依據(jù)接收的請求查詢是否存儲(chǔ)有用于標(biāo)記所述共享資源的訪問互斥文件;
[0040]所述第一處理單元,用于在所述查詢單元未存儲(chǔ)有訪問互斥文件時(shí),創(chuàng)建用于標(biāo)記所述共享資源的訪問互斥文件,創(chuàng)建的所述訪問互斥文件中包含所述訪問共享資源的請求中包含的訪問共享資源的操作對應(yīng)的互斥操作,通知所述共享資源訪問模塊;
[0041]所述第二處理單元,用于在所述查詢單元存儲(chǔ)有訪問互斥文件時(shí),獲取存儲(chǔ)的訪問互斥文件中包含的互斥操作,判斷所述訪問共享資源的請求中包含的訪問共享資源的操作是否為所述互斥操作之一,如果否,接受所述訪問共享資源的請求,并將所述訪問共享資源的請求中包含的訪問共享資源的操作對應(yīng)的互斥操作添加到所述存儲(chǔ)的訪問互斥文件中,通知所述共享資源訪問模塊。
[0042]作為另一實(shí)施例,所述第二處理單元進(jìn)一步用于如果判斷所述訪問共享資源的請求中包含的訪問共享資源的操作為所述互斥操作之一,拒絕所述訪問共享資源的請求,通知所述拒絕訪問模塊。
[0043]作為另一實(shí)施例,所述第二