軟總線程序并發資源分配方法
【技術領域】
[0001]本發明屬于一種數據處理方法,具體涉及一種軟總線程序并發資源分配方法。
【背景技術】
[0002]軟總線程序主要應用在網絡通信系統中,實現模塊間的數據通信功能,是模塊間實現跨進程通信的通道。數據傳輸的效率是衡量該通道的一個重要指標,對軟總線而言,它是一個服務模塊,同一時刻進行通信的客戶端模塊有若干個,保證每個模塊都能夠及時準確的收到信息是軟總線首要考慮的問題。
[0003]針對這個問題,目前有兩種解決方案,一是依賴于硬件擴展,譬如增加計算機內存,提升計算機主頻等,借以提高硬件處理能力;二是用軟件方法實現多線程、多進程工作,提高數據傳輸的并發性效率。
[0004]上述兩種方式雖然能在一定程度上解決數據轉發速度問題,但是過于依賴外部條件(譬如硬件配置)就會降低軟件產品的推廣應用,使軟件產品成為特殊應用;同樣,如果一味的增加線程或進程數量來解決這個問題,除了硬件依賴性太強之外,系統處理能力反而下降,從而影響了數據傳輸效率的提升。
【發明內容】
[0005]為解決上述技術中的不足,本發明的目的在于:提供一種軟總線程序并發資源分配方法,既能提高數據轉發效率,又能消除對硬件條件和線程數量的過度依賴。
[0006]為解決其技術問題,本發明所采取的技術方案為:
[0007]所述軟總線程序并發資源分配方法,包括以下步驟:
[0008]第一步,建立應用級線程池,預先啟動若干個工作者線程Wn (η = 1,2,…,N,N取大于2的整數)和一個管理者線程M ;
[0009]第二步,為每一個工作者線程^定義一個發送緩沖區,由管理者線程M進行該發送緩沖區內發送數據的調配與寫入,由工作者線程^進行該發送緩沖區內發送數據的讀取和轉發。
[0010]其中,優選方案為:
[0011]所述發送緩沖區具體定義方式如下:
[0012]定義CBuf類,這個類中包含一個CRec類型的成員變量m_CRec
[5000]、一個int類型的讀指針m_nRead和一個int類型的寫指針m_nWrite,m_CRec
[5000]成員變量是發送緩沖區,由管理者線程M和工作者線程評?共同使用,讀指針m_nRead記錄發送緩沖區中已經發送到第幾條記錄,由工作者線程Wn使用;寫指針m_nWrite記錄發送緩沖區中已經寫到第幾條記錄,由管理者線程M使用。
[0013]所述第二步中發送緩沖區內發送數據的調配與寫入實現方式如下:
[0014]管理者線程M從代發數據堆中獲取發送的數據匕后,計算所有W n的負荷情況,定義工作者線程1?的負荷為W abs (m_nffrite-m_nRead),其中abs表示絕對值,找出任務負荷最小者wn_后將D s寫入W ?_的m_CRec發送緩沖區中,同時將該發送緩沖區的寫指針m_nWrite加1,M線程無限循環。
[0015]所述第二步中工作者線程Wn讀取和轉發緩沖發送區內數據的方式如下:
[0016]工作者線程樣自己的發送緩沖區m_CRec中獲取一條未發送記錄D s后進行數據轉發,成功后將m_CRec發送緩沖區讀指針m_nRead加I ;然后判斷自己的發送負荷量,如果負荷量大于O則繼續循環發送。
[0017]所述讀指針m_nRead如果與寫指針m_nWrite相等,則讀指針m_nRead加I,覆蓋一條未發送記錄。
[0018]與現有技術相比,本發明具有以下有益效果:
[0019]本發明既能提高數據轉發效率,又能消除對硬件條件和線程數量的過度依賴。管理者線程M發送任務的調度處理方法簡單易用,經過任務的合理分配,發送線程數量控制在5到8個左右就可以達到要求,降低了服務器硬件要求;同時,由于線程數量的合理運用,操作系統調度更加合理,整體效率得到提升,初步估算約為30% -50% ;該方法通過負荷量計算,合理分配發送任務,提高了數據轉發效率。通過試驗驗證,利用該方法,在20個客戶端情況下,實現任意客戶端之間的數據傳輸,按照每秒50條記錄,一條記錄長度為10240字節傳輸,接收方時延僅為200毫秒,比多線程搶占式發送效率提升了 300% -500%。
【附圖說明】
[0020]圖1是實施例1原理圖。
【具體實施方式】
[0021]下面結合附圖對本發明實施例做進一步描述:
[0022]實施例1:
[0023]如圖1所示,本發明所述軟總線程序并發資源分配方法,包括以下步驟:
[0024]第一步,建立應用級線程池,預先啟動若干個工作者線程Wn (η = 1,2,…,N,N取大于2的整數)和一個管理者線程M ;
[0025]第二步,為每一個工作者線程^定義一個發送緩沖區,由管理者線程M進行該發送緩沖區內發送數據的調配與寫入,由工作者線程^進行該發送緩沖區內發送數據的讀取和轉發。
[0026]其中,所述發送緩沖區具體定義方式如下:
[0027]定義CBuf類,這個類中包含一個CRec類型的成員變量m_CRec
[5000]、一個int類型的讀指針m_nRead和一個int類型的寫指針m_nWrite,m_CRec
[5000]成員變量是發送緩沖區,由管理者線程M和工作者線程評?共同使用,讀指針m_nRead記錄發送緩沖區中已經發送到第幾條記錄,由工作者線程Wn使用;寫指針m_nWrite記錄發送緩沖區中已經寫到第幾條記錄,由管理者線程M使用。
[0028]所述第二步中發送緩沖區內發送數據的調配與寫入實現方式如下:
[0029]管理者線程M從代發數據堆中獲取發送的數據匕后,計算所有W n的負荷情況,定義工作者線程1?的負荷為W abs (m_nffrite-m_nRead),其中abs表示絕對值,找出任務負荷最小者Wnnun后將D s寫入W ?_的m_CRec發送緩沖區中,同時將該發送緩沖區的寫指針m_nWrite加1,M線程無限循環。
[0030]所述第二步中工作者線程Wn讀取和轉發緩沖發送區內數據的方式如下:
[0031 ] 工作者線程樣自己的發送緩沖區m_CRec中獲取一條未發送記錄D s后進行數據轉發,成功后將m_CRec發送緩沖區讀指針m_nRead加I ;然后判斷自己的發送負荷量,如果負荷量大于O則繼續循環發送。
[0032]所述讀指針m_nRead如果與寫指針m_nWrite相等,則讀指針m_nRead加I,覆蓋一條未發送記錄。
[0033]本發明既能提高數據轉發效率,又能消除對硬件條件和線程數量的過度依賴。管理者線程M發送任務的調度處理方法簡單易用,經過任務的合理分配,發送線程數量控制在5到8個左右就可以達到要求,降低了服務器硬件要求;同時,由于線程數量的合理運用,操作系統調度更加合理,整體效率得到提升,初步估算約為30% -50% ;該方法通過負荷量計算,合理分配發送任務,提高了數據轉發效率。
[0034]以20個客戶端為例,每個客戶端內搭建一軟總線模塊,任意兩個客戶端之間進行信息交互時,所述軟總線模塊利用上述軟總線程序并發資源分配方法進行資源的并發和分配,按照每秒50條記錄,一條記錄長度為10240字節傳輸,接收方時延僅為200毫秒,比多線程搶占式發送效率提升了 300% -500%。
【主權項】
1.一種軟總線程序并發資源分配方法,其特征在于,包括以下步驟: 第一步,建立應用級線程池,預先啟動若干個工作者線程Wn (η = I, 2,…,N,N取大于2的整數)和一個管理者線程M ; 第二步,為每一個工作者線程胃?定義一個發送緩沖區,由管理者線程M進行該發送緩沖區內發送數據的調配與寫入,由工作者線程Wn進行該發送緩沖區內發送數據的讀取和轉發。2.根據權利要求1所述的軟總線程序并發資源分配方法,其特征在于,所述發送緩沖區具體定義方式如下: 定義CBuf類,這個類中包含一個CRec類型的成員變量m_CRec [5000]、一個int類型的讀指針m_nRead和一個int類型的寫指針m_nWrite,m_CRec [5000]成員變量是發送緩沖區,由管理者線程M和工作者線程評?共同使用,讀指針m_nRead記錄發送緩沖區中已經發送到第幾條記錄,由工作者線程Wn使用;寫指針m_nWrite記錄發送緩沖區中已經寫到第幾條記錄,由管理者線程M使用。3.根據權利要求2所述的軟總線程序并發資源分配方法,其特征在于,所述第二步中工作者線程Wn讀取和轉發緩沖發送區內數據的方式如下: 工作者線程Wn從自己的發送緩沖區m_CRec中獲取一條未發送記錄D s后進行數據轉發,成功后將m_CRec發送緩沖區讀指針m_nRead加I ;然后判斷自己的發送負荷量,如果負荷量大于O則繼續循環發送。4.根據權利要求2所述的軟總線程序并發資源分配方法,其特征在于,所述第二步中發送緩沖區內發送數據的調配與寫入實現方式如下: 管理者線程M從代發數據堆中獲取發送的數據匕后,計算所有W n的負荷情況,定義工作者線程1的負荷為Wnftif= abs (m_nffrite-m_nRead),其中abs表示絕對值,找出任務負荷最小者Wnnun后將D s寫入Wnnun的m_CRec發送緩沖區中,同時將該發送緩沖區的寫指針m_nWrite加1,M線程無限循環。5.根據權利要求4所述的軟總線程序并發資源分配方法,其特征在于,所述讀指針m_nRead如果與寫指針m_nWrite相等,則讀指針m_nRead加1,覆蓋一條未發送記錄。6.根據權利要求1所述的軟總線程序并發資源分配方法,其特征在于,所述工作者線程定義5-8個,即N取5-8。
【專利摘要】本發明屬于一種數據處理方法,具體涉及一種軟總線程序并發資源分配方法,包括以下步驟:第一步,建立應用級線程池,預先啟動若干個工作者線程Wn(n=1,2,…,N,N取大于2的整數)和一個管理者線程M;第二步,為每一個工作者線程Wn定義一個發送緩沖區,由管理者線程M進行該發送緩沖區內發送數據的調配與寫入,由工作者線程Wn進行該發送緩沖區內發送數據的讀取和轉發。本發明既能提高數據轉發效率,又能消除對硬件條件和線程數量的過度依賴,管理者線程M發送任務的調度處理方法簡單易用,發送線程數量控制在5到8個左右就可以達到要求,通過負荷量計算,合理分配發送任務,提高了數據轉發效率。
【IPC分類】G06F9/48
【公開號】CN105183553
【申請號】CN201510731501
【發明人】劉國永, 徐傳倫, 張憲強, 張萬征
【申請人】山東智洋電氣股份有限公司
【公開日】2015年12月23日
【申請日】2015年10月31日