醫(yī)療多線程共享資源分配處理方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)應(yīng)用技術(shù)領(lǐng)域,尤其涉及一種醫(yī)療多線程共享資源分配處理方法及系統(tǒng)。
【背景技術(shù)】
[0002]隨著計(jì)算機(jī)應(yīng)用的快速發(fā)展,計(jì)算機(jī)處理器已經(jīng)廣泛的應(yīng)用在移動(dòng)通信、數(shù)字消費(fèi)電子和智能控制設(shè)備領(lǐng)域,人們對計(jì)算機(jī)處理器的各項(xiàng)性能的要求也越來越高,然而,在醫(yī)療領(lǐng)域中,對計(jì)算機(jī)處理要求快速而穩(wěn)定,在單線程處理器結(jié)構(gòu)中只能發(fā)掘一個(gè)線程的指令級,多線程是指從軟件或者硬件上實(shí)現(xiàn)多個(gè)線程并發(fā)執(zhí)行的技術(shù)。具有多線程能力的計(jì)算機(jī)因有硬件支持而能夠在同一時(shí)間執(zhí)行多于一個(gè)線程,進(jìn)而提升整體處理性能,其中,針對多核或多處理器中多線程的并發(fā)資源貢獻(xiàn)分配如何進(jìn)行優(yōu)化,是能充分發(fā)揮計(jì)算機(jī)處理能力中的非常重要的一環(huán),現(xiàn)有的多線程共享資源通常都在資源分配的過程中產(chǎn)生了加鎖、解鎖的性能消耗和沖突,當(dāng)一線程正在進(jìn)行操作時(shí),需要讓其他線程等待,需要其他線程等待操作完成之后,解鎖并將其釋放才能進(jìn)行操作,這樣會導(dǎo)致更新數(shù)據(jù)時(shí)需要頻繁的加鎖、解鎖,造成讀寫線程等待時(shí)間過長,嚴(yán)重降低了多線程處理的效率,因此,需要一種新的多線程處理系統(tǒng)以解決上述問題。
【發(fā)明內(nèi)容】
[0003]有鑒于此,本發(fā)明提供一種醫(yī)療多線程共享資源分配處理方法及系統(tǒng),以解決上述問題。
[0004]本發(fā)明提供的醫(yī)療多線程共享資源分配處理方法包括:
[0005]a、創(chuàng)建共享資源隊(duì)列,所述共享隊(duì)列包括主隊(duì)列和從隊(duì)列,
[0006]b.優(yōu)先對主隊(duì)列中的每個(gè)元素進(jìn)行存儲和釋放操作,所述從隊(duì)列初始狀態(tài)為空閑狀態(tài);
[0007]c.當(dāng)主隊(duì)列滿載后,從隊(duì)列接替主隊(duì)列工作。
[0008]進(jìn)一步,在步驟c中,當(dāng)所述主隊(duì)列滿載后,判斷從隊(duì)列是否為空閑狀態(tài),若為非空閑狀態(tài),則報(bào)告錯(cuò)誤。
[0009]進(jìn)一步,判斷隊(duì)列中的元素是否為可用,并將所述元素的可用狀態(tài)進(jìn)行標(biāo)記。
[0010]進(jìn)一步,將所述元素進(jìn)行編號,根據(jù)線程存儲請求,從隊(duì)首向后依次查找第一個(gè)標(biāo)記為可用狀態(tài)的元素,并存放資源,同時(shí)將其標(biāo)記為不可用狀態(tài)。
[0011]進(jìn)一步,根據(jù)線程釋放請求,釋放相應(yīng)資源,并將相應(yīng)編號的元素的標(biāo)記由不可用狀態(tài)標(biāo)記為可用狀態(tài)。
[0012]本發(fā)明還提供了一種醫(yī)療多線程共享資源分配處理系統(tǒng),包括共享資源隊(duì)列模塊、資源存儲模塊、資源釋放模塊以及用于發(fā)起線程存儲和釋放指令的請求模塊;
[0013]所述共享資源隊(duì)列模塊包括:用于優(yōu)先對隊(duì)列中的每個(gè)元素進(jìn)行存儲和釋放操作的主隊(duì)列模塊和用于當(dāng)主隊(duì)列模塊滿載后接替主隊(duì)列模塊工作的從隊(duì)列模塊,所述從隊(duì)列模塊初始狀態(tài)為空閑狀態(tài);
[0014]所述請求模塊分別與資源存儲模塊和資源釋放模塊連接,所述共享資源隊(duì)列模塊分別與資源存儲模塊和資源釋放模塊連接。
[0015]進(jìn)一步,還包括用于判斷所述主隊(duì)列模塊和從隊(duì)列模塊工作狀態(tài)的判斷單元。
[0016]進(jìn)一步,還包括當(dāng)判斷單元檢測到主隊(duì)列模塊滿載后,從隊(duì)列模塊狀態(tài)不為空閑時(shí)自動(dòng)進(jìn)行報(bào)錯(cuò)的報(bào)警單元。
[0017]進(jìn)一步,還包括用于將多線程并發(fā)的存儲或釋放請求進(jìn)行排序的時(shí)序模塊。
[0018]進(jìn)一步,所述資源釋放模塊還包括用于將接到線程資源釋放請求后將元素進(jìn)行標(biāo)記的標(biāo)記單元。
[0019]本發(fā)明的有益效果:本發(fā)明通過主、從隊(duì)列方式自適應(yīng)資源分配,能降低高并發(fā)時(shí)各線程無法因無法獲取資源的等待時(shí)間。同時(shí)通過對資源進(jìn)行原子操作的標(biāo)記置換取代傳統(tǒng)的對資源進(jìn)行加鎖,降低了各線程間資源競爭的性能消耗,能最大程度的利用多核處理器性能。
【附圖說明】
[0020]下面結(jié)合附圖和實(shí)施例對本發(fā)明作進(jìn)一步描述:
[0021]圖1是本發(fā)明的原理示意圖。
[0022]圖2是本發(fā)明的實(shí)施例的流程示意圖
【具體實(shí)施方式】
[0023]下面結(jié)合附圖和實(shí)施例對本發(fā)明作進(jìn)一步描述:圖1是本發(fā)明的原理示意圖。
[0024]如圖2所示,本實(shí)施例中的醫(yī)療多線程共享資源分配處理方法,包括:
[0025]a、創(chuàng)建共享資源隊(duì)列,所述共享隊(duì)列包括主隊(duì)列和從隊(duì)列,
[0026]b.優(yōu)先對主隊(duì)列中的每個(gè)元素進(jìn)行存儲和釋放操作,所述從隊(duì)列初始狀態(tài)為空閑狀態(tài);
[0027]c.當(dāng)主隊(duì)列滿載后,從隊(duì)列接替主隊(duì)列工作。
[0028]本實(shí)施例充分發(fā)揮了多處理器硬件能力,優(yōu)化了醫(yī)療應(yīng)用程序多線程并行共享資源利用,避免了資源分配中的加鎖、解鎖性能消耗和沖突,提高了程序性能。
[0029]在步驟c中,當(dāng)所述主隊(duì)列滿載后,判斷從隊(duì)列是否為空閑狀態(tài),若為非空閑狀態(tài),則報(bào)告錯(cuò)誤。主隊(duì)列首先投入使用,從隊(duì)列空閑,且會在主隊(duì)列滿載后投入使用,此時(shí)主隊(duì)列會被置為從隊(duì)列,若主隊(duì)列滿載后,發(fā)現(xiàn)從隊(duì)列不為空閑狀態(tài),說明程序出現(xiàn)錯(cuò)誤導(dǎo)致性能下降,立即上報(bào)錯(cuò)誤。
[0030]在本實(shí)施例中,判斷隊(duì)列中的元素是否為可用,并將所述元素的可用狀態(tài)進(jìn)行標(biāo)記。將所述元素進(jìn)行編號,根據(jù)線程存儲請求,從隊(duì)首向后依次查找第一個(gè)標(biāo)記為可用狀態(tài)的元素,并存放資源,同時(shí)將其標(biāo)記為不可用狀態(tài)。隊(duì)列中的元素用“1”和“0”兩種標(biāo)記表示該元素是否可用,隊(duì)列接到線程存儲請求后會從隊(duì)首向后依次查找第一個(gè)為“ 1”標(biāo)記的元素,存放資源,并將其標(biāo)記置為“0”;3.資源釋放,隊(duì)列接到線程釋放請求后會將相應(yīng)編號的元素的標(biāo)記由“0”置為“ 1 ”,表示元素已經(jīng)卸載了資源,可再次使用。隊(duì)列中每個(gè)元素的標(biāo)記切換均為原子操作,對于多線程并發(fā)的存儲或釋放請求會有先后順序,不會造成沖突。
[0031]相應(yīng)的本實(shí)施例還提供了一種醫(yī)療多線程共享資源分配處理系統(tǒng),如圖1所示,包括共享資源隊(duì)列模塊、資源存儲模塊、資源釋放模塊以及用于發(fā)起線程存儲和釋放指令的請求模塊;
[0032]所述共享資源隊(duì)列模塊包括:用于優(yōu)先對隊(duì)列中的每個(gè)元素進(jìn)行存儲和釋放操作的主隊(duì)列模塊和用于當(dāng)主隊(duì)列模塊滿載后接替主隊(duì)列模塊工作的從隊(duì)列模塊