專利名稱:一種程序并發(fā)的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機(jī)軟件領(lǐng)域,特別是涉及ー種程序并發(fā)的方法及系統(tǒng)。
背景技術(shù):
由于直接調(diào)用爭用資源的并發(fā)操作程序可能會引起計算結(jié)果的邏輯錯誤(其中,對于操作爭用資源的程序代碼段,稱為臨界區(qū))。為了避免上述可能出現(xiàn)的邏輯錯誤,現(xiàn)有技術(shù)提供的方案是在進(jìn)入臨界區(qū)時進(jìn)行加鎖操作,離開臨界區(qū)時進(jìn)行解鎖操作,以保證不會同時對同一資源進(jìn)行讀或?qū)懙牟僮?,從而避免計算結(jié)果的邏輯錯誤。但是現(xiàn)有技術(shù)提供的臨界區(qū)上鎖操作方案(亦稱為同步操作)的實質(zhì)是將并發(fā)操作串行化,具體參見圖I所示,從而使未取得資源控制權(quán)的程序等待已取得控制權(quán)的程序,因此其計算機(jī)程序爭用資源的并發(fā)運行效率較低。
發(fā)明內(nèi)容
本發(fā)明提供一種程序并發(fā)的方法及系統(tǒng),用以解決現(xiàn)有技術(shù)中計算機(jī)程序爭用資源的并發(fā)運行效率較低的問題。本發(fā)明的方法包括下列步驟各并發(fā)進(jìn)程在進(jìn)入臨界區(qū)前的步驟分別獲取具有唯一性的時間戳;各并發(fā)進(jìn)程在臨界區(qū)內(nèi)的步驟將獲取的時間戳作為本進(jìn)程所操作子文件的文件名的一部分;各并發(fā)進(jìn)程離開臨界區(qū)后的步驟依子文件的文件名所攜帯的時間戳的先后順序,將各子文件合井。進(jìn)一歩,獲取具有唯一性時間戳的方式是對獲取時間戳的進(jìn)程使用PV鎖,或者取時間戳的時間單位與進(jìn)程并發(fā)頻率相匹配。進(jìn)ー步,各并發(fā)進(jìn)程在臨界區(qū)內(nèi)的步驟中還包括同一文件的子文件使用相同的前輟,作為子文件的文件名的一部分;以及,各并發(fā)進(jìn)程離開臨界區(qū)后的步驟中還包括將具有相同前輟的子文件合井。本發(fā)明的系統(tǒng)包括時間戳獲取單元,用于在各并發(fā)進(jìn)程進(jìn)入臨界區(qū)前,為每ー進(jìn)程獲取具有唯一性的時間戳;文件名修改単元,用于在各并發(fā)進(jìn)程進(jìn)入臨界區(qū)后,將獲取的時間戳作為本進(jìn)程所操作子文件的文件名的一部分;合并單元,用于在各并發(fā)進(jìn)程離開臨界區(qū)后,依子文件的文件名所攜帯的時間戳的先后順序,將各子文件合井。進(jìn)ー步,時間戳獲取單元獲取具有唯一性時間戳的方式是對獲取時間戳的進(jìn)程使用PV鎖,或者取時間戳的時間單位與進(jìn)程并發(fā)頻率相匹配。進(jìn)ー步,文件名修改單元還將同一文件的子文件以相同的前輟作為子文件的文件名的一部分;以及,合并單元將具有相同前輟的子文件合井。本發(fā)明中由于使用了時間戳,所以以時間戳作為子文件名的一部分后,子文件名必然不會重名,從而可以避免對同一文件資源同時進(jìn)行操作。因此,對子文件操作的程序段就可以并發(fā)的進(jìn)行而不會造成邏輯錯誤。
圖I為現(xiàn)有并發(fā)處理過程示意圖;圖2為本發(fā)明實施例中的方法步驟流程圖;圖3為本發(fā)明實施例中的系統(tǒng)結(jié)構(gòu)示意圖;圖4為本發(fā)明實施例中的發(fā)處理過程示意圖。
具體實施例方式為了充分利用計算機(jī)的性能,改進(jìn)傳統(tǒng)方法對爭用文件資源的并發(fā)程序的性能,本發(fā)明實施例提供了一種程序并發(fā)的方法,參見圖2所示,包括下列步驟S101、各并發(fā)進(jìn)程在進(jìn)入臨界區(qū)前,分別獲取具有唯一性的時間戳。 具體的,可利用系統(tǒng)時鐘獲取時間戳。獲取時間戳的程序(即進(jìn)程,不再贅述)可以通過足夠小的時間單位作為時間戳,以保證時間戳的唯一性。對于系統(tǒng)底層無法提供足夠高精度的時間戳或多處理器的計算機(jī),可以僅對獲取時間戳的程序使用PV鎖來保證時間戳的卩隹一‘注。上述PV鎖,即P操作和V操作是不可中斷的程序段,稱為原語。P、V原語中P是荷蘭語的Passeren,相當(dāng)于英文的pass, V是荷蘭語的Verhoog,相當(dāng)于英文中的incremnet。各操作系統(tǒng)都提供了 PV鎖的P和V的操作接ロ,又稱為互斥鎖。S102、各并發(fā)進(jìn)程在臨界區(qū)內(nèi),將獲取的時間戳作為本進(jìn)程所操作子文件的文件名的一部分。具體的,先參照現(xiàn)有技術(shù)的處理方式,將ー個文件拆分成若干子文件,各并發(fā)進(jìn)程將在臨界區(qū)內(nèi)分別操作上述子文件。本步驟中,還將獲取的時間戳作為本進(jìn)程所操作子文件的文件名的一部分,用于避免重名。為了便于S103步驟中完成合并操作,本步驟中還可將同一文件的子文件使用相同的前輟,作為子文件的文件名的一部分。S103、各并發(fā)進(jìn)程離開臨界區(qū)后,依子文件的文件名所攜帯的時間戳的先后順序,將各子文件合并。若步驟S102中進(jìn)行了増加前綴的操作,則可將具有相同前輟的子文件依子文件的文件名所攜帯的時間戳的先后順序合并,便于完成合并操作。本發(fā)明還提供了一種程序并發(fā)系統(tǒng)的實施例,參見圖3所示,包括時間戳獲取單元201、文件名修改單元202和合并單元203。其中,時間戳獲取單元201用于在各并發(fā)進(jìn)程進(jìn)入臨界區(qū)前,為每ー進(jìn)程獲取具有唯一性的時間戳。具體的,可利用系統(tǒng)時鐘獲取時間戳。獲取時間戳的程序(即進(jìn)程,不再贅述)可以通過足夠小的時間單位作為時間戳,以保證時間戳的唯一性。對于系統(tǒng)底層無法提供足夠高精度的時間戳或多處理器的計算機(jī),可以僅對獲取時間戳的程序使用PV鎖來保證時間戳的唯一性。文件名修改単元202用于在各并發(fā)進(jìn)程進(jìn)入臨界區(qū)后,將獲取的時間戳作為本進(jìn)程所操作子文件的文件名的一部分。具體的,先參照現(xiàn)有技術(shù)的處理方式,將ー個文件拆分成若干子文件,各并發(fā)進(jìn)程將在臨界區(qū)內(nèi)分別操作上述子文件。文件名修改単元202將獲取的時間戳作為本進(jìn)程所操作子文件的文件名的一部分,用于避免重名。文件名修改単元202還可將同一文件的子文件使用相同的前輟,作為子文件的文件名的一部分,以便于合并操作。合并單元203用于在各并發(fā)進(jìn)程離開臨界區(qū)后,依子文件的文件名所攜帯的時間戳的先后順序,將各子文件合井。合并單元203還可將具有相同前輟的子文件依子文件的文件名所攜帯的時間戳的先后順序合并,便于完成合并操作。為了體現(xiàn)本發(fā)明的有益效 果,以下帶入具體數(shù)值進(jìn)行對比說明。計算的前提條件取得時間戳的程序段按2毫秒算,處理文件資源的臨界區(qū)程序段的處理過程按100毫秒算,3個并發(fā)進(jìn)程。由于現(xiàn)有的處理過程實質(zhì)是將并發(fā)操作串行化,讓未取得資源控制權(quán)的程序等待已取得控制權(quán)的程序,因此耗時為每ー并發(fā)操作所需時間之和,因此完成3個并發(fā)的操作耗時將會是300毫秒。由于本發(fā)明的處理過程實質(zhì)是并發(fā)操作并行化,具體可參見圖所示,因此耗時則會是2毫秒X3+100毫秒,共106毫秒。程序的運行時間相比傳統(tǒng)方法可提高(300-106)/300 = 64. 7%??梢?,大幅提高了計算機(jī)程序爭用資源的并發(fā)運行效率。顯然,為了便于完成合并操作,在同一文件的第一個子文件的文件名中増加標(biāo)識,以標(biāo)明起始位置,以及在同一文件的最后ー個子文件的文件名中増加標(biāo)識,以標(biāo)明終止位置,之后參照起始位置和終止位置完成文件合并的方案,都應(yīng)在本發(fā)明保護(hù)范圍之內(nèi)。本領(lǐng)域的技術(shù)人員可以對本發(fā)明進(jìn)行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
權(quán)利要求
1.一種程序并發(fā)的方法,其特征在于,包括下列步驟 各并發(fā)進(jìn)程在進(jìn)入臨界區(qū)前的步驟分別獲取具有唯一性的時間戳; 各并發(fā)進(jìn)程在臨界區(qū)內(nèi)的步驟將獲取的所述時間戳作為本進(jìn)程所操作子文件的文件名的一部分; 各并發(fā)進(jìn)程離開臨界區(qū)后的步驟依子文件的文件名所攜帯的時間戳的先后順序,將各子文件合并。
2.如權(quán)利要求I所述程序并發(fā)的方法,其特征在于,所述獲取具有唯一性時間戳的方式是對獲取時間戳的進(jìn)程使用PV鎖。
3.如權(quán)利要求I所述程序并發(fā)的方法,其特征在于,所述獲取具有唯一性時間戳的方式是取時間戳的時間單位與進(jìn)程并發(fā)頻率相匹配。
4.如權(quán)利要求I所述程序并發(fā)的方法,其特征在于,各并發(fā)進(jìn)程在臨界區(qū)內(nèi)的步驟中還包括同一文件的子文件使用相同的前綴,作為子文件的文件名的一部分;以及,各并發(fā)進(jìn)程離開臨界區(qū)后的步驟中還包括將具有相同前輟的子文件合井。
5.ー種程序并發(fā)的系統(tǒng),其特征在于,包括 時間戳獲取單元,用于在各并發(fā)進(jìn)程進(jìn)入臨界區(qū)前,為每ー進(jìn)程獲取具有唯一性的時間戳; 文件名修改単元,用于在各并發(fā)進(jìn)程進(jìn)入臨界區(qū)后,將獲取的所述時間戳作為本進(jìn)程所操作子文件的文件名的一部分; 合并單元,用于在各并發(fā)進(jìn)程離開臨界區(qū)后,依子文件的文件名所攜帯的時間戳的先后順序,將各子文件合并。
6.如權(quán)利要求5所述程序并發(fā)的系統(tǒng),其特征在于,所述時間戳獲取單元獲取具有唯一性時間戳的方式是對獲取時間戳的進(jìn)程使用PV鎖。
7.如權(quán)利要求5所述程序并發(fā)的系統(tǒng),其特征在干,所述時間戳獲取單元獲取具有唯一性時間戳的方式是取時間戳的時間單位與進(jìn)程并發(fā)頻率相匹配。
8.如權(quán)利要求5所述程序并發(fā)的系統(tǒng),其特征在于,文件名修改単元還將同一文件的子文件以相同的前輟作為子文件的文件名的一部分;以及,合并單元將具有相同前輟的子文件合井。
全文摘要
本發(fā)明公開了一種程序并發(fā)的方法及系統(tǒng),涉及計算機(jī)軟件領(lǐng)域,用以解決現(xiàn)有技術(shù)中計算機(jī)程序爭用資源的并發(fā)運行效率較低的問題。方法包括各并發(fā)進(jìn)程在進(jìn)入臨界區(qū)前的步驟分別獲取具有唯一性的時間戳;各并發(fā)進(jìn)程在臨界區(qū)內(nèi)的步驟將獲取的時間戳作為本進(jìn)程所操作子文件的文件名的一部分;各并發(fā)進(jìn)程離開臨界區(qū)后的步驟依子文件的文件名所攜帶的時間戳的先后順序,將各子文件合并。系統(tǒng)包括時間戳獲取單元、文件名修改單元和合并單元。本發(fā)明中由于使用了時間戳,所以以時間戳作為子文件名的一部分后,子文件名必然不會重名,從而可以避免對同一文件資源同時進(jìn)行操作。因此,對子文件操作的程序段就可以并發(fā)的進(jìn)行而不會造成邏輯錯誤。
文檔編號G06F9/50GK102650956SQ20111004313
公開日2012年8月29日 申請日期2011年2月23日 優(yōu)先權(quán)日2011年2月23日
發(fā)明者柯宗慶, 柯宗貴, 梁大海 申請人:藍(lán)盾信息安全技術(shù)股份有限公司