欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

實現(xiàn)多入多出隊列的方法和設備的制作方法

文檔序號:6516746閱讀:236來源:國知局
實現(xiàn)多入多出隊列的方法和設備的制作方法
【專利摘要】本發(fā)明公開了一種實現(xiàn)多入多出隊列的方法和設備,屬于計算機應用軟件【技術領域】,一種實現(xiàn)多入多出隊列的方法,包括以下步驟:S1.將隊列的存儲空間進行分組,N個表項分為一組,N個表項中,第一個表項存儲這一組表項中有效的表項數(shù)目,有效值是0到(N-1),其余(N-1)個表項存儲生產(chǎn)者的數(shù)據(jù),其中N為大于等于1的整數(shù)。本發(fā)明的有益效果如下:提高了單位生產(chǎn)和消費者問題的效率。最大限度的降低了多核環(huán)境下自旋鎖這一性能瓶頸對隊列操作的影響,提高了多核環(huán)境下的隊列性能,進而提高了整個多核系統(tǒng)的性能。
【專利說明】實現(xiàn)多入多出隊列的方法和設備
【技術領域】
[0001]本發(fā)明涉及計算機應用軟件【技術領域】,尤其涉及一種實現(xiàn)多入多出隊列的方法和設備。
【背景技術】
[0002]在系統(tǒng)軟件中,通常使用隊列作為不同模塊間共享數(shù)據(jù)的媒介。因此,隊列通常是被多個軟件模式使用的,不同的軟件模塊在使用隊列時都需要進行互斥,以保證隊列的完整性。隨著多核技術的發(fā)展,多核系統(tǒng)中的核間通信通常也采用隊列技術,因為隊列技術比較簡單高效,但是隨著多核系統(tǒng)中核數(shù)目的增多,隊列的訪問者也隨之增加,核與核之間都需要互斥的訪問隊列,但是多核系統(tǒng)中類似自旋鎖之類的互斥手段會隨著競爭的增加,效率會下降的非常快,最終導致隊列的效率變得非常低。
[0003]傳統(tǒng)的隊列技術,如圖1所示,會使用一個隊列頭指針和隊列尾指針,頭指針用于入隊操作,尾指針用于出隊操作,在入隊操作時,判斷頭指針加I后是否和尾指針相等,如果相等,表明隊列已滿,不能入隊,如果不相等,表明隊列未滿,可以入隊,入隊后,頭指針加
I。出隊操作判斷尾指針和頭指針是否相等,如果相等,表明隊列為空,不能出隊,如果不相等,表明隊列有表項,可以出隊,出隊后,將尾指針加I。隊列在多核環(huán)境下使用時,由于存在多個核同時操作隊列,需要在入隊操作和出隊操作時添加鎖進行互斥。
[0004]傳統(tǒng)隊列技術的實現(xiàn)存在以下問題:為了在多核間互斥,所有操作都是鎖起來的。
[0005]在多核系統(tǒng)中,由于競爭帶來的自旋鎖消耗會使自旋鎖效率嚴重降低,特別是隨著眾核(通常指含有8個以上CPU)的普及,核的數(shù)目增加后,這種效率成指數(shù)級下降。隊列技術是核間進行通信的首要選擇,但是傳統(tǒng)的隊列技術由于需要自旋鎖作為保護手段,在多核環(huán)境下使用時,性能并不高,迫切需要設計一種新的隊列,在多核環(huán)境下保持高性能。要提聞隊列的性能,重點提聞的是自旋鎖的性能,而提聞自旋鎖的性能,重點在于減小自旋鎖的沖突概率,以及自旋鎖保護的范圍。
[0006]在經(jīng)典的生產(chǎn)者消費者環(huán)境中,如圖2所示,生產(chǎn)者向隊列中添加表項,消費者從隊列取出表項。生產(chǎn)者完成一個操作分為兩個部分,一個是完成生成流程(ptl),另一個是完成添加隊列的流程(Pt2)。多個生產(chǎn)者在pt2的過程中需要互斥的訪問隊列,這個操作會發(fā)生競爭隊列的情況。消費者同理,也分為兩個流程,一個是從隊列中取表項(ctl),另一個是使用該表項(ct2)。多個消費者會在ctl的時間段中互斥的訪問隊列。
[0007]對于需要被多個模塊訪問的隊列,被共享訪問,就意味著競爭是必然存在的,而當今的計算機架構,多核間的隨著競爭者的增加性能會急劇下降,大量的時間會消耗在獲取自旋鎖上,這個問題是計算機體系架構決定的,無法改變。因此,為了提高在多核環(huán)境下隊列的性能,需要一種新的隊列,減小競爭帶來的額外開銷。

【發(fā)明內(nèi)容】

[0008]本發(fā)明的目的在于改善多核環(huán)境下計算機性能低下的現(xiàn)狀而提出的一種多入多出隊列的實現(xiàn)方法和設備。
[0009]為了實現(xiàn)以上發(fā)明目的,本發(fā)明采取的技術方案如下:一種實現(xiàn)多入多出隊列的方法,包括以下步驟:
[0010]S1.將隊列的存儲空間進行分組,N個表項分為一組,N個表項中,第一個表項存儲這一組表項中有效的表項數(shù)目,有效值是O到(N-1),其余(N-1)個表項存儲生產(chǎn)者的數(shù)據(jù),其中N為大于等于I的整數(shù);
[0011]S2.生產(chǎn)者和消費者操作隊列的基本單位是一組N個表項,當生產(chǎn)者有M個表項要加入時,隊列也是分配一組N個表項,其中M小于等于(N-1);入隊時,一次性將M個表項填入隊列,最后再將M填入到第一個表項中,表示表項填入完成;
[0012]S3.出隊時,一次性從隊列中出隊一組N個表項,首選從第一個表項中查看有效的表項個數(shù),在完成有效表項出隊之后,將隊列中的第一個表項清零,表示出隊完成。
[0013]進一步的,入隊時通過以下公式判斷隊列滿:頭指針+N=尾指針;如果相等,表明隊列已滿,不能入隊,如果不相等,表明隊列未滿,可以入隊,入隊后,頭指針加N。
[0014]進一步的,出隊時通過以下公式判斷隊列空:尾指針=頭指針;如果相等,表明隊列為空,不能出隊,如果不相等,表明隊列有表項,可以出隊,出隊后,將尾指針加N。
[0015]進一步的,出隊和入隊時還需要通過每組表項中的表項個數(shù)判斷能否出隊或者入隊。
[0016]進一步的,入隊時,需要判斷下一組表項的表項個數(shù)是否為0,為O即可入隊。
[0017]進一步的,出隊時,需要判斷下一組表項的表項個數(shù)是否不為0,不為O即可出隊。
[0018]進一步的,所述的S2中,生產(chǎn)者和消費者最多一次性進行(N-1)次生產(chǎn)和消費操作,然后批量入隊數(shù)據(jù)和批量出隊數(shù)據(jù)。
[0019]為了解決上述問題,本發(fā)明還提出了一種實現(xiàn)多入多出隊列的設備,隊列的存儲空間至少包括一個分組,其中,N個表項為一組,N個表項中的第一個表項用于存儲這一組表項中有效的表項數(shù)目,有效值是O到(N-1),其余(N-1)個表項用于存儲生產(chǎn)者的數(shù)據(jù),其中N為大于等于I的整數(shù)。
[0020]進一步的,隊列存儲空間包括四個分組,每組有四個表項。
[0021]進一步的,所述的四個表項中第一個表項用于存儲這一組表項中有效的表項數(shù)目3,其余3個表項用于存儲生產(chǎn)者的數(shù)據(jù)。
[0022]本發(fā)明的有益效果:本發(fā)明首先將隊列進行分組改造,同時將第一個表項用于存儲分組有效數(shù)量以支持批量操作的需要,然后修改傳統(tǒng)隊列的入隊和出隊操作,將自旋鎖的保護僅僅限于頭部和尾部指針的移動,實現(xiàn)了自旋鎖保護的范圍和操作的表項完全無關;最后生產(chǎn)者消費者的流程在支持批量操作的隊列環(huán)境下,可以實現(xiàn)批量生產(chǎn)和批量消費,達到延長生產(chǎn)和消費時間,減小同時競爭隊列的幾率,提高了隊列的性能,最終提高了單位生產(chǎn)和消費者問題的效率,最大限度的降低了多核環(huán)境下自旋鎖這一性能瓶頸對隊列操作的影響,提高了多核環(huán)境下的隊列性能,進而提高了整個多核系統(tǒng)的性能。
【專利附圖】

【附圖說明】
[0023]圖1為傳統(tǒng)隊列存儲空間結構示意圖;
[0024]圖2為生產(chǎn)者消費者環(huán)境中傳統(tǒng)隊列出隊入隊示意圖;[0025]圖3為本發(fā)明的隊列存儲空間結構示意圖;
[0026]圖4為本發(fā)明具體實施例1的隊列出隊入隊示意圖;
[0027]圖5為本發(fā)明具體實施例2的隊列出隊入隊示意圖。
【具體實施方式】
[0028]為使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下參照附圖并舉實施例,對本發(fā)明做進一步詳細說明。
[0029]一種實現(xiàn)多入多出隊列的方法,包括以下步驟:
[0030]S1.將隊列的存儲空間進行分組,N個表項分為一組,N個表項中,第一個表項存儲這一組表項中有效的表項數(shù)目,有效值是O到(N-1),其余表項用于存儲生產(chǎn)者的數(shù)據(jù),其中N為大于等于I的整數(shù)。
[0031]S2.生產(chǎn)者和消費者操作隊列的基本單位是一組N個表項,其中(N-1)用于保存生產(chǎn)者的數(shù)據(jù)。即使生產(chǎn)者只有M (M小于等于(N-1))個表項要加入,隊列也是分配一組N個表項。因此,生產(chǎn)者在生產(chǎn)階段最多可以連續(xù)進行(N-1)次生產(chǎn)操作,產(chǎn)生多個表項,時間為M*ptl。入隊時,一次性將M個表項填入隊列,最后再將M填入到第一個表項中(第一個表項表示有效的表項個數(shù)),以此表示表項填入完成。
[0032]S3.出隊者一次性從隊列中出隊一組N個表項,首選從第一個表項中查看有效的表項個數(shù),在完成有效表項出隊之后,將隊列中的第一個表項清零,表示出隊完成。
[0033]相對于傳統(tǒng)隊列使用自旋鎖保護整個操作過程,本發(fā)明中,自旋鎖只保護頭(head)指針和尾(tail)指針的移動過程,對于表項的寫入和讀取不進行保護,而head和tail指針不是操作一個表項移動一次,而是一次性移動N個位置,只有一次操作,因此操作者持有自旋鎖的時間和操作的表項個數(shù)無關,自旋鎖保護的范圍大大減小。
[0034]當有多個入隊和出隊者同時操作時,由于指針的移動是保護的,每個操作者獲得的可操作的區(qū)域是完全不同的,因此,入隊者和出隊者可以同時操作隊列而不受影響。
[0035]傳統(tǒng)隊列判斷隊列空和隊列滿時,采用head+1 ==tai I判斷隊列滿,而本發(fā)明中,由于隊列時按組分配,因此需要采用head+N==tail判斷隊列滿。傳統(tǒng)隊列中采用tail==head判斷隊列空,在本發(fā)明中,仍然適用。
[0036]由于指針的移動先于表項的寫入和讀取,就是說,head和tail指針已經(jīng)移動了,但是表項操作并沒有完成,因此,只通過head和tail指針判斷隊列狀態(tài)是不安全的。例如:入隊操作中,通過head和tail指針判斷隊列有空閑的空間可以加入新表項,但是有可能當前是出隊操作移動了 tail指針,但是表項正在處于讀出的過程中,還未完成,這時候入隊操作就有可能直接覆蓋了正在被出隊讀出的表項。因此,出隊和入隊都需要借助每組表項中的表項個數(shù)來進行額外的判斷,入隊時,需要判斷下一組表項的表項個數(shù)是否為O (因為表項個數(shù)清零是出隊的最后一個操作)。出隊時,需要判斷下一組表項的表項個數(shù)是否不為O (因為賦值表項個數(shù)是入隊的最后一個操作)。
[0037]偽代碼:
[0038][0039]
【權利要求】
1.一種實現(xiàn)多入多出隊列的方法,其特征在于,包括以下步驟: S1.將隊列的存儲空間進行分組,N個表項分為一組,N個表項中,第一個表項存儲這一組表項中有效的表項數(shù)目,有效值是O到(N-I),其余(N-I)個表項存儲生產(chǎn)者的數(shù)據(jù),其中N為大于等于I的整數(shù); S2.生產(chǎn)者和消費者操作隊列的基本單位是一組N個表項,當生產(chǎn)者有M個表項要加入時,隊列也是分配一組N個表項,其中M小于等于(N-I);入隊時,一次性將M個表項填入隊列,最后再將M填入到第一個表項中,表示表項填入完成; S3.出隊時,一次性從隊列中出隊一組N個表項,首選從第一個表項中查看有效的表項個數(shù),在完成有效表項出隊之后,將隊列中的第一個表項清零,表示出隊完成。
2.根據(jù)權利要求I所述的方法,其特征在于,入隊時通過以下公式判斷隊列滿:頭指針+N=尾指針;如果相等,表明隊列已滿,不能入隊,如果不相等,表明隊列未滿,可以入隊,入隊后,頭指針加N。
3.根據(jù)權利要求I或2所述的方法,其特征在于,出隊時通過以下公式判斷隊列空:尾指針=頭指針;如果相等,表明隊列為空,不能出隊,如果不相等,表明隊列有表項,可以出隊,出隊后,將尾指針加N。
4.根據(jù)權利要求3所述的方法,其特征在于,出隊和入隊時還需要通過每組表項中的表項個數(shù)判斷能否出隊或者入隊。
5.根據(jù)權利要求4所述的方法,其特征在于:入隊時,需要判斷下一組表項的表項個數(shù)是否為O,為O即可入隊。
6.根據(jù)權利要求5所述的方法,其特征在于:出隊時,需要判斷下一組表項的表項個數(shù)是否不為O,不為O即可出隊。
7.根據(jù)權利要求I所述的方法,其特征在于:所述的S2中,生產(chǎn)者和消費者最多一次性進行(N-I)次生產(chǎn)和消費操作,然后批量入隊數(shù)據(jù)和批量出隊數(shù)據(jù)。
8.一種實現(xiàn)多入多出隊列的設備,其特征在于:隊列的存儲空間至少包括一個分組,其中,N個表項為一組,N個表項中的第一個表項用于存儲這一組表項中有效的表項數(shù)目,有效值是O到(N-I),其余(N-I)個表項用于存儲生產(chǎn)者的數(shù)據(jù),其中N為大于等于I的整數(shù)。
9.根據(jù)權利要求8所述的設備,其特征在于:隊列存儲空間包括四個分組,每組有四個表項。
10.根據(jù)權利要求9所述的設備,其特征在于:所述的四個表項中第一個表項用于存儲這一組表項中有效的表項數(shù)目3,其余3個表項用于存儲生產(chǎn)者的數(shù)據(jù)。
【文檔編號】G06F9/44GK103530130SQ201310514533
【公開日】2014年1月22日 申請日期:2013年10月28日 優(yōu)先權日:2013年10月28日
【發(fā)明者】曾健 申請人:邁普通信技術股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
将乐县| 北流市| 东乡族自治县| 厦门市| 大石桥市| 军事| 抚松县| 彭泽县| 化德县| 乐至县| 嘉黎县| 格尔木市| 丽水市| 汕头市| 利津县| 抚州市| 越西县| 安化县| 乌拉特后旗| 怀来县| 明星| 台南县| 徐汇区| 沙河市| 延津县| 仙居县| 平昌县| 新巴尔虎右旗| 衡南县| 盐源县| 红桥区| 鸡西市| 新巴尔虎左旗| 松潘县| 南丰县| 武定县| 新平| 泽州县| 尚志市| 灵石县| 武清区|