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