當(dāng)所述服務(wù)器的分配進(jìn)程存在未分發(fā)的任務(wù)時(shí),所述分配進(jìn)程可通過所述服務(wù)器與另一臺(tái)或多臺(tái)服務(wù)器進(jìn)行通信,將未分發(fā)的任務(wù)分發(fā)至由所述另一臺(tái)或多臺(tái)服務(wù)器啟動(dòng)的多個(gè)擴(kuò)展進(jìn)程,由所述多個(gè)擴(kuò)展進(jìn)程完成任務(wù)并將任務(wù)結(jié)果返回至所述分配進(jìn)程;且所述分配進(jìn)程和多個(gè)擴(kuò)展進(jìn)程之間通過socket進(jìn)行通信。
[0039]由于本發(fā)明的第二種多進(jìn)程交互方法是基于第一種多進(jìn)程交互方法實(shí)現(xiàn)的,其技術(shù)方案的原理與第一種多進(jìn)程交互方法的技術(shù)方案的原理一致,故本發(fā)明的第二種多進(jìn)程交互方法具有第一種多進(jìn)程交互方法所產(chǎn)生的技術(shù)效果。
[0040]同理,為實(shí)現(xiàn)服務(wù)器對(duì)多個(gè)客戶端分別發(fā)送的多個(gè)需求信息的快速處理,在基于第一種多進(jìn)程交互方法的構(gòu)思下,本發(fā)明還提供了第三種的多進(jìn)程交互方法,其包括以下步驟:
[0041 ] 服務(wù)器啟動(dòng)一分配進(jìn)程和多個(gè)任務(wù)進(jìn)程;
[0042]分配進(jìn)程接收由多個(gè)客戶端分別發(fā)送的多個(gè)需求信息,并生成對(duì)應(yīng)的任務(wù)分發(fā)至多個(gè)任務(wù)進(jìn)程;
[0043]多個(gè)任務(wù)進(jìn)程分別完成由分配進(jìn)程分發(fā)的任務(wù),并生成相應(yīng)的任務(wù)結(jié)果返回至分配進(jìn)程;
[0044]分配進(jìn)程將接收到的多個(gè)任務(wù)結(jié)果分別反饋至與其對(duì)應(yīng)的客戶端。
[0045]進(jìn)一步,所述服務(wù)器中處理器的核數(shù)為N個(gè),N為整數(shù)且其大于I;及步驟服務(wù)器啟動(dòng)一分配進(jìn)程和多個(gè)任務(wù)進(jìn)程中,服務(wù)器啟動(dòng)的多個(gè)任務(wù)進(jìn)程的數(shù)量為N-1個(gè);以及所述分配進(jìn)程和多個(gè)任務(wù)進(jìn)程之間通過socket進(jìn)行通信。
[0046]進(jìn)一步,所述步驟分配進(jìn)程接收由多個(gè)客戶端分別發(fā)送的多個(gè)需求信息,并生成對(duì)應(yīng)的任務(wù)分發(fā)至多個(gè)任務(wù)進(jìn)程,具體包括以下步驟:
[0047]分配進(jìn)程接收由多個(gè)客戶端分別發(fā)送的多個(gè)需求信息,并根據(jù)接收到所有客戶端的需求信息的先后順序依次生成分別對(duì)應(yīng)于多個(gè)需求信息的多個(gè)任務(wù),同時(shí)依次建立每一客戶端與其對(duì)應(yīng)的任務(wù)的關(guān)聯(lián)關(guān)系;
[0048]分配進(jìn)程判斷所有任務(wù)進(jìn)程的工作狀態(tài),若判斷得到所有任務(wù)進(jìn)程的工作狀態(tài)均為忙碌狀態(tài),則分配進(jìn)程不分發(fā)任務(wù)至所有任務(wù)進(jìn)程,并控制所有任務(wù)按先后順序進(jìn)入排隊(duì)等候狀態(tài);若判斷得到存在工作狀態(tài)為空閑狀態(tài)的任務(wù)進(jìn)程,則分配進(jìn)程按先后順序?qū)⑷蝿?wù)分發(fā)至處于空閑狀態(tài)的任務(wù)進(jìn)程中,并控制未分發(fā)的任務(wù)繼續(xù)排隊(duì)等候;
[0049]及所述步驟多個(gè)任務(wù)進(jìn)程分別完成由分配進(jìn)程分發(fā)的任務(wù),并生成相應(yīng)的任務(wù)結(jié)果返回至分配進(jìn)程,具體包括以下步驟:
[0050]多個(gè)任務(wù)進(jìn)程接收由分配進(jìn)程分發(fā)的任務(wù)后,均分別預(yù)算任務(wù)處理復(fù)雜度,并將任務(wù)處理復(fù)雜度發(fā)送至分配進(jìn)程;
[0051]完成任務(wù)處理復(fù)雜度的發(fā)送后,所述多個(gè)任務(wù)進(jìn)程分別獨(dú)立完成由分配進(jìn)程分發(fā)的任務(wù),并生成相應(yīng)的任務(wù)結(jié)果返回至分配進(jìn)程;
[0052]以及所述步驟分配進(jìn)程將接收到的多個(gè)任務(wù)結(jié)果分別反饋至客戶端中,分配進(jìn)程在接收到多個(gè)任務(wù)結(jié)果后,還分別刪除返回多個(gè)任務(wù)結(jié)果的多個(gè)任務(wù)進(jìn)程在完成任務(wù)前發(fā)送的任務(wù)處理復(fù)雜度;并按先后順序?qū)⑴抨?duì)等候中的任務(wù)分發(fā)至空閑狀態(tài)的任務(wù)進(jìn)程。
[0053]進(jìn)一步,當(dāng)所述服務(wù)器的分配進(jìn)程存在未分發(fā)的任務(wù)時(shí),所述分配進(jìn)程可通過所述服務(wù)器與另一臺(tái)或多臺(tái)服務(wù)器進(jìn)行通信,將未分發(fā)的任務(wù)分發(fā)至由所述另一臺(tái)或多臺(tái)服務(wù)器啟動(dòng)的多個(gè)擴(kuò)展進(jìn)程,由所述多個(gè)擴(kuò)展進(jìn)程完成任務(wù)并將任務(wù)結(jié)果返回至所述分配進(jìn)程;且所述分配進(jìn)程和多個(gè)擴(kuò)展進(jìn)程之間通過socket進(jìn)行通信。
[0054]由于本發(fā)明的第三種多進(jìn)程交互方法是基于第一種多進(jìn)程交互方法實(shí)現(xiàn)的,其技術(shù)方案的原理與第一種多進(jìn)程交互方法的技術(shù)方案的原理一致,故本發(fā)明的第三種多進(jìn)程交互方法具有第一種多進(jìn)程交互方法所產(chǎn)生的技術(shù)效果。
[0055]相應(yīng)地,本發(fā)明還提供了能夠?qū)崿F(xiàn)上述3種多進(jìn)程交互方法的一種多進(jìn)程交互系統(tǒng),其包括主服務(wù)器;所述主服務(wù)器包括一分配進(jìn)程模塊和多個(gè)任務(wù)進(jìn)程模塊;所述分配進(jìn)程模塊接收由客戶端發(fā)送的需求信息,并將所有需求信息生成對(duì)應(yīng)的任務(wù)分發(fā)至所述多個(gè)任務(wù)進(jìn)程模塊;所述多個(gè)任務(wù)進(jìn)程模塊分別完成由分配進(jìn)程分發(fā)的任務(wù),生成相應(yīng)的任務(wù)結(jié)果返回至所述分配進(jìn)程模塊,并由分配進(jìn)程模塊將接收到的多個(gè)任務(wù)結(jié)果反饋至客戶端。
[0056]進(jìn)一步,所述需求信息為由多個(gè)客戶端分別發(fā)送的單個(gè)需求信息,或者為由多個(gè)客戶端分別發(fā)送的多個(gè)需求信息,或者為由單個(gè)客戶端發(fā)送的多個(gè)需求信息。
[0057]進(jìn)一步,所述主服務(wù)器中處理器的核數(shù)為N個(gè),N為整數(shù)且其大于I;及所述多個(gè)任務(wù)進(jìn)程模塊的數(shù)量為N-1個(gè);且所述分配進(jìn)程模塊和多個(gè)任務(wù)進(jìn)程模塊之間通過socket進(jìn)行通信。
[0058]進(jìn)一步,所述多進(jìn)程交互系統(tǒng)還包括一個(gè)或一個(gè)以上的擴(kuò)展服務(wù)器。每個(gè)擴(kuò)展服務(wù)器中包括多個(gè)擴(kuò)展進(jìn)程模塊;當(dāng)所述分配進(jìn)程模塊中存在未分發(fā)的任務(wù)時(shí),所述分配進(jìn)程模塊可通過所述主服務(wù)器與所述擴(kuò)展服務(wù)器進(jìn)行通信,將未分發(fā)的任務(wù)分發(fā)至由所述擴(kuò)展服務(wù)器啟動(dòng)的多個(gè)擴(kuò)展進(jìn)程模塊中,由所述多個(gè)擴(kuò)展進(jìn)程模塊完成任務(wù)并將任務(wù)結(jié)果返回至所述分配進(jìn)程模塊;且所述分配進(jìn)程模塊和多個(gè)擴(kuò)展進(jìn)程模塊之間通過socket進(jìn)行通
?目O
[0059]由于本發(fā)明的多進(jìn)程交互系統(tǒng)能夠?qū)崿F(xiàn)上述3種多進(jìn)程交互方法,則其具有上述3種多進(jìn)程交互方法所產(chǎn)生的技術(shù)效果。
[0060]另外,本發(fā)明還單獨(dú)提供了一種多進(jìn)程交互服務(wù)器,該多進(jìn)程交互服務(wù)器的結(jié)構(gòu)及功能與為上述任一項(xiàng)所述多進(jìn)程交互系統(tǒng)中的主服務(wù)器的結(jié)構(gòu)和功能相同,也即,該多進(jìn)程交互服務(wù)器包括一分配進(jìn)程模塊和多個(gè)任務(wù)進(jìn)程模塊;所述分配進(jìn)程模塊接收由客戶端發(fā)送的需求信息,并將所有需求信息生成對(duì)應(yīng)的任務(wù)分發(fā)至所述多個(gè)任務(wù)進(jìn)程模塊;所述多個(gè)任務(wù)進(jìn)程模塊分別完成由分配進(jìn)程分發(fā)的任務(wù),生成相應(yīng)的任務(wù)結(jié)果返回至所述分配進(jìn)程模塊,并由分配進(jìn)程模塊將接收到的多個(gè)任務(wù)結(jié)果反饋至客戶端。
[0061]為了更好地理解和實(shí)施,下面結(jié)合附圖詳細(xì)說明本發(fā)明。
【附圖說明】
[0062]圖1是本發(fā)明實(shí)施例1中多進(jìn)程交互方法的流程圖;
[0063]圖2是本發(fā)明實(shí)施例1中多進(jìn)程交互系統(tǒng)的主服務(wù)器的結(jié)構(gòu)框圖;
[0064]圖3是本發(fā)明實(shí)施例1中多進(jìn)程交互系統(tǒng)的主服務(wù)器和擴(kuò)展服務(wù)器的結(jié)構(gòu)框圖;
[0065]圖4是本發(fā)明實(shí)施例2中多進(jìn)程交互方法的流程圖;
[0066]圖5是本發(fā)明實(shí)施例3中多進(jìn)程交互方法的流程圖。
【具體實(shí)施方式】
[0067]實(shí)施例1
[0068]為了解決現(xiàn)有技術(shù)中通過單進(jìn)程多線程的方式實(shí)現(xiàn)游戲服務(wù)器對(duì)大量玩家發(fā)送的任務(wù)進(jìn)行處理的過程中,采用的鎖機(jī)制導(dǎo)致系統(tǒng)發(fā)生死鎖現(xiàn)象和邏輯處理復(fù)雜度增大的問題,也為解決現(xiàn)有技術(shù)通過一個(gè)進(jìn)程處理多人戰(zhàn)斗邏輯而導(dǎo)致游戲服務(wù)器在必須保證玩家戰(zhàn)斗體驗(yàn)感受良好的情況下只能支撐200個(gè)玩家的數(shù)據(jù)處理,從而限制在線玩家人數(shù)的問題;本發(fā)明旨在利用服務(wù)器的CPU多核配置性能同時(shí)運(yùn)行多個(gè)進(jìn)程,使得多個(gè)進(jìn)程同時(shí)工作完成玩家戰(zhàn)斗邏輯數(shù)據(jù)的處理,同時(shí)也可在該基礎(chǔ)上對(duì)多個(gè)進(jìn)程的完成的任務(wù)類型進(jìn)行分配,使得每個(gè)進(jìn)程僅完成與其相關(guān)的任務(wù),由此大大提高服務(wù)器的處理效率,降低邏輯處理復(fù)雜度,不會(huì)發(fā)生系統(tǒng)死鎖現(xiàn)象,同時(shí)也增大了玩家的在線人數(shù),例如,當(dāng)服務(wù)器的CPU核數(shù)為N時(shí),玩家最大在線人數(shù)可達(dá)(N-1) X 200。以下,具體地說明本發(fā)明實(shí)現(xiàn)多進(jìn)程交互方法。
[0069]請(qǐng)參閱圖1,本發(fā)明多進(jìn)程交互方法,包括以下步驟:
[0070]步驟S1:服務(wù)器啟動(dòng)一分配進(jìn)程和多個(gè)任務(wù)進(jìn)程;在本實(shí)施例中,服務(wù)器在啟動(dòng)分配進(jìn)程和多個(gè)任務(wù)進(jìn)程前,已建立分配進(jìn)程和多個(gè)任務(wù)進(jìn)程。為最大限度地利用服務(wù)器的CPU多核配置性能,提高處理效率和同時(shí)在線用戶人數(shù),作為一種更優(yōu)的技術(shù)方案,如果所述服務(wù)器中處理器的核數(shù)為N個(gè),N為整數(shù)且其大于I;則服務(wù)器啟動(dòng)的多個(gè)任務(wù)進(jìn)程的數(shù)量為N-1個(gè)。也即,當(dāng)所述服務(wù)器的處理器(CPU)的核數(shù)為4個(gè)時(shí),服務(wù)器建立并啟動(dòng)3個(gè)任務(wù)進(jìn)程和I個(gè)分配進(jìn)程。
[0071]步驟S2:分配進(jìn)程接收由多個(gè)客戶端分別發(fā)送的單個(gè)需求信息,并生成對(duì)應(yīng)的任務(wù)分發(fā)至多個(gè)任務(wù)進(jìn)程;
[0072]步驟S3:多個(gè)任務(wù)進(jìn)程分別完成由分配進(jìn)程分發(fā)的任務(wù),并生成相應(yīng)的任務(wù)結(jié)果返回至分配進(jìn)程;
[0073]步驟S4:分配進(jìn)程將接收到的多個(gè)任務(wù)結(jié)果分別反饋至與其對(duì)應(yīng)的客戶端。
[0074]進(jìn)一步,為了更好地分配多個(gè)任務(wù)進(jìn)程的任務(wù),使其能夠更好地完成各自的任務(wù),在本實(shí)施例中,分配進(jìn)程可對(duì)所有需求信息進(jìn)行分類,并生成多種類的任務(wù);且服務(wù)器根據(jù)任務(wù)的種類建立多種類型的任務(wù)進(jìn)程,每一任務(wù)進(jìn)程完成一特定類型的任務(wù)。則分配進(jìn)程可根據(jù)生成的任務(wù)的類型分發(fā)給類型與任務(wù)類型相同的任務(wù)進(jìn)程。例如,以游戲戰(zhàn)斗邏輯數(shù)據(jù)處理說明,游戲戰(zhàn)斗邏輯數(shù)據(jù)的處理任務(wù)一般包括數(shù)據(jù)存儲(chǔ)任務(wù)、完成日志任務(wù)、戰(zhàn)斗邏輯處理任務(wù)等,則在建立任務(wù)進(jìn)程時(shí),可建立負(fù)責(zé)處理數(shù)據(jù)存儲(chǔ)任務(wù)的任務(wù)進(jìn)程、負(fù)責(zé)完成日志任務(wù)的任務(wù)進(jìn)程及負(fù)責(zé)完成戰(zhàn)斗邏輯處理任務(wù)的任務(wù)進(jìn)程等。
[0075]為保證與需求信息對(duì)應(yīng)的任務(wù)能正常地按先后順序?qū)崿F(xiàn)分發(fā)并由任務(wù)進(jìn)程完成,從而進(jìn)一步保證所有任務(wù)的有序且及時(shí)的處理和保證用戶的體驗(yàn),作為一種更優(yōu)的技術(shù)方案,對(duì)所述步驟S2進(jìn)一步完善,完善后的步驟S2具體包括以下步驟:
[0076]步驟S21:分