配進程接收由多個客戶端分別發(fā)送的單個需求信息,并根據(jù)接收到需求信息的先后順序依次生成分別對應(yīng)于多個需求信息的多個任務(wù),同時依次建立每個客戶端分別和與其對應(yīng)的任務(wù)之間的關(guān)聯(lián)關(guān)系;
[0077]步驟S22:分配進程判斷所有任務(wù)進程的工作狀態(tài),若判斷得到所有任務(wù)進程的工作狀態(tài)均為忙碌狀態(tài),則分配進程不分發(fā)任務(wù)至所有任務(wù)進程,并控制所有任務(wù)按先后順序進入排隊等候狀態(tài);若判斷得到存在工作狀態(tài)為空閑狀態(tài)的任務(wù)進程,則分配進程按先后順序?qū)⑷蝿?wù)分發(fā)至處于空閑狀態(tài)的任務(wù)進程中,并控制未分發(fā)的任務(wù)繼續(xù)排隊等候。
[0078]為使得分配進程能夠及時了解各個任務(wù)進程的任務(wù)的難度,以方便了分配進程根據(jù)各個任務(wù)進程的任務(wù)處理復(fù)雜度實現(xiàn)任務(wù)的合理調(diào)度,作為一種更優(yōu)的技術(shù)方案,對步驟S3進行完善,完善后的步驟S3具體包括以下步驟:
[0079]步驟S31:多個任務(wù)進程接收由分配進程分發(fā)的任務(wù)后,均分別預(yù)算任務(wù)處理復(fù)雜度,并將任務(wù)處理復(fù)雜度發(fā)送至分配進程;
[0080]步驟S32:完成任務(wù)處理復(fù)雜度的發(fā)送后,所述多個任務(wù)進程分別獨立完成由分配進程分發(fā)的任務(wù),并生成相應(yīng)的任務(wù)結(jié)果返回至分配進程。
[0081]進一步,為避免已經(jīng)無存在意義的任務(wù)處理復(fù)雜度(也即已被完成的任務(wù)所對應(yīng)的任務(wù)處理復(fù)雜度)對分配進程的空間的占據(jù),避免冗余數(shù)據(jù)在分配進程的殘留,以保證分配進程的處理速度,作為一種更優(yōu)的技術(shù)方案,所述步驟S4中,分配進程在接收到多個任務(wù)結(jié)果后,還分別刪除返回多個任務(wù)結(jié)果的多個任務(wù)進程在完成任務(wù)前發(fā)送的任務(wù)處理復(fù)雜度;并按先后順序?qū)⑴抨牭群蛑械娜蝿?wù)分發(fā)至空閑狀態(tài)的任務(wù)進程。
[0082]為解決當一臺服務(wù)器不能解決過多需求的性能限制的問題,以進一步提高處理效率和擴大在線用戶人數(shù),能夠更好地滿足用戶需求,作為一種更優(yōu)的技術(shù)方案,當所述服務(wù)器的分配進程存在未分發(fā)的任務(wù)時,所述分配進程可通過所述服務(wù)器與另一臺或多臺服務(wù)器進行通信,將未分發(fā)的任務(wù)分發(fā)至由所述另一臺或多臺服務(wù)器啟動的多個擴展進程,由所述多個擴展進程完成任務(wù)并將任務(wù)結(jié)果返回至所述分配進程。
[0083]進一步,為了使得多臺服務(wù)器之間的聯(lián)合協(xié)助具有良好的擴展性,從而使得進程可以方便地擴展到多臺服務(wù)器上交互,作為一種更優(yōu)的技術(shù)方案,所述分配進程和多個任務(wù)進程之間通過socket進行通信,且所述分配進程和多個擴展進程之間通過socket進行通
?目O
[0084]其中,本文全文中的socket是計算機領(lǐng)域的一個通用名詞,其含義如下:
[0085]網(wǎng)絡(luò)上的兩個程序通過一個雙向的通信連接實現(xiàn)數(shù)據(jù)的交換,這個連接的一端稱為一個socket,通常也稱作〃套接字〃,用于描述IP地址和端口,是一個通信鏈的句柄,可以用來實現(xiàn)不同虛擬機或不同計算機之間的通信。并且,在此后出現(xiàn)的socket的含義均與該處socket的含義相同。
[0086]以下,以多人在線戰(zhàn)術(shù)競技游戲的戰(zhàn)斗邏輯數(shù)據(jù)處理過程為例進一步說明本發(fā)明的多進程交互方法:
[0087]在多人在線戰(zhàn)術(shù)競技游戲的戰(zhàn)斗邏輯處理中,服務(wù)器首先根據(jù)其處理器的核數(shù)N啟動一個分配進程和N-1個任務(wù)進程,其中,N-1個任務(wù)進程中可分配其中一任務(wù)進程負責完成數(shù)據(jù)存儲任務(wù)、其中一任務(wù)進程負責完成日志任務(wù),剩下的任務(wù)進程負責完成玩家戰(zhàn)斗邏輯處理任務(wù)。則分配進程接收玩家鏈接和玩家請求信息,生成相應(yīng)的任務(wù)并通過socket通知相應(yīng)的任務(wù)進程協(xié)助完成任務(wù);相應(yīng)的任務(wù)進程完成任務(wù)后將任務(wù)結(jié)果返回至分配進程,由分配進程將任務(wù)結(jié)果反饋給玩家。
[0088]請參閱圖2,相應(yīng)地,本發(fā)明還提供了能夠?qū)崿F(xiàn)上述多進程交互方法的一種多進程交互系統(tǒng),其包括主服務(wù)器I。所述主服務(wù)器I包括一分配進程模塊11和多個任務(wù)進程模塊12ο
[0089]所述分配進程模塊11接收由客戶端發(fā)送的需求信息,并將所有需求信息生成對應(yīng)的任務(wù)分發(fā)至所述多個任務(wù)進程模塊12。具體地,首先,所述分配進程模塊11接收由客戶端發(fā)送的需求信息,并根據(jù)接收到所有需求信息的先后順序依次生成分別對應(yīng)于多個需求信息的多個任務(wù);如果存在多個客戶端時,分配進程模塊11還需同時依次建立每個客戶端分別和與其對應(yīng)的任務(wù)之間的關(guān)聯(lián)關(guān)系。然后,分配進程模塊11判斷所有任務(wù)進程模塊的工作狀態(tài),若判斷得到所有任務(wù)進程模塊12的工作狀態(tài)均為忙碌狀態(tài),則分配進程模塊11不分發(fā)任務(wù)至所有任務(wù)進程模塊12,并控制所有任務(wù)按先后順序進入排隊等候狀態(tài);若判斷得到存在工作狀態(tài)為空閑狀態(tài)的任務(wù)進程模塊,則分配進程模塊11按先后順序?qū)⑷蝿?wù)分發(fā)至處于空閑狀態(tài)的任務(wù)進程模塊中,并控制未分發(fā)的任務(wù)繼續(xù)排隊等候。
[0090]所述多個任務(wù)進程模塊12分別完成由分配進程分發(fā)的任務(wù),生成相應(yīng)的任務(wù)結(jié)果返回至所述分配進程模塊U,并由分配進程模塊11將接收到的多個任務(wù)結(jié)果反饋至客戶端。具體地,首先,所述多個任務(wù)進程模塊12接收由分配進程模塊11分發(fā)的任務(wù)后,均分別預(yù)算任務(wù)處理復(fù)雜度,并將任務(wù)處理復(fù)雜度發(fā)送至分配進程模塊11。在完成任務(wù)處理復(fù)雜度的發(fā)送后,所述多個任務(wù)進程模塊12分別獨立完成由分配進程模塊11分發(fā)的任務(wù),并生成相應(yīng)的任務(wù)結(jié)果返回至分配進程模塊11。
[0091]在本實施例中,所述需求信息為由多個客戶端分別發(fā)送的單個需求信息,或者為由多個客戶端分別發(fā)送的多個需求信息,或者為由單個客戶端發(fā)送的多個需求信息。
[0092]為最大限度地利用服務(wù)器的CPU多核配置性能,提高處理效率和同時在線用戶人數(shù),作為一種更優(yōu)的技術(shù)方案,如果所述主服務(wù)器I中處理器的核數(shù)為N個,N為整數(shù)且其大于I;及所述多個任務(wù)進程模塊12的數(shù)量為N-1個。
[0093]請參閱圖3,為解決當一臺服務(wù)器不能解決過多需求的性能限制的問題,以進一步提高處理效率和擴大在線用戶人數(shù),能夠更好地滿足用戶需求,作為一種更優(yōu)的技術(shù)方案,所述多進程交互系統(tǒng)還包括一個或一個以上的擴展服務(wù)器2。每個擴展服務(wù)器2中包括多個擴展進程模塊21;當所述分配進程模塊11中存在未分發(fā)的任務(wù)時,所述分配進程模塊11可通過所述主服務(wù)器I與所述擴展服務(wù)器2進行通信,將未分發(fā)的任務(wù)分發(fā)至由所述擴展服務(wù)器2啟動的多個擴展進程模塊21中,由所述多個擴展進程模塊21完成任務(wù)并將任務(wù)結(jié)果返回至所述分配進程模塊11。
[0094]為了使得多臺服務(wù)器之間的聯(lián)合協(xié)助具有良好的擴展性,從而使得進程可以方便地擴展到多臺服務(wù)器上交互,作為一種更優(yōu)的技術(shù)方案,所述分配進程模塊11和多個任務(wù)進程模塊12之間通過socket進行通信;且所述分配進程模塊11和多個擴展進程模塊21之間通過socket進行通信。
[0095]另外,本發(fā)明還單獨提供了一種多進程交互服務(wù)器,該多進程交互服務(wù)器的結(jié)構(gòu)及功能與所述多進程交互系統(tǒng)中的主服務(wù)器的結(jié)構(gòu)和功能相同,也即,該多進程交互服務(wù)器也包括一分配進程模塊和多個任務(wù)進程模塊;所述分配進程模塊接收由客戶端發(fā)送的需求信息,并將所有需求信息生成對應(yīng)的任務(wù)分發(fā)至所述多個任務(wù)進程模塊;所述多個任務(wù)進程模塊分別完成由分配進程分發(fā)的任務(wù),生成相應(yīng)的任務(wù)結(jié)果返回至所述分配進程模塊,并由分配進程模塊將接收到的多個任務(wù)結(jié)果反饋至客戶端。且如果所述多進程交互服務(wù)器I中處理器的核數(shù)為N個,N為整數(shù)且其大于I;則所述多進程交互服務(wù)器中的多個任務(wù)進程模塊12的數(shù)量為N-1個。
[0096]相對于現(xiàn)有技術(shù),本發(fā)明通過利用服務(wù)器的CPU的多核性能,實現(xiàn)多個進程的同時運行,也即由分配進程分配任務(wù),由多個任務(wù)進程同時工作并獨立完成任務(wù),從而不僅大大提高了任務(wù)處理的效率和保證了各個任務(wù)進程工作的獨立性,而且擴大客戶端的數(shù)量,不需要應(yīng)用鎖機制,從而避免了需求信息競爭情況的發(fā)生。將本發(fā)明的多進程交互方法應(yīng)用于游戲服務(wù)器時,能夠?qū)崿F(xiàn)在滿足游戲服務(wù)器的要求的同時大大降低邏輯處理的復(fù)雜度,從而有效地提高游戲服務(wù)器的處理能力,并擴大游戲服務(wù)器能夠支撐的游戲玩家的數(shù)量,提升最大同時在線人數(shù)。
[0097]實施例2
[0098]本發(fā)明的實施例1實現(xiàn)了服務(wù)器對多個客戶端分別發(fā)送的單個需求信息的快速處理,但本發(fā)明還可以實現(xiàn)服務(wù)器對單個客戶端發(fā)送的多個需求信息的快速處理,因此,請參閱圖4,在基于實施例1的多進程交互方法的構(gòu)思下,本發(fā)明還提供了第二種多進程交互方法,其包括以下步驟:
[0099]步驟S’1:服務(wù)器啟動一分配進程和多個任務(wù)進程;在本實施例中,服務(wù)器在啟動分配進程和多個任務(wù)進程前,已建立分配進程和多個任務(wù)進程。為最大限度地利用服務(wù)器的CPU多核配置性能,提高處理效率和同時在線用戶人數(shù),作為一種更優(yōu)的技術(shù)方案,如果所述服務(wù)器中處理器的核數(shù)為N個,N為整數(shù)且其大于I;則服務(wù)器啟動的多個任務(wù)進程的數(shù)量為N-1個。也即,當所述服務(wù)器的處理器(CPU)的核數(shù)為4個時,服務(wù)器建立并啟動3個任務(wù)進程和I個分配進程。
[0100]步驟S’2:分配進程接收由單個客戶端發(fā)送的多個需求信息,并生成對應(yīng)的任務(wù)分發(fā)至多個任務(wù)進程;
[0101]步驟S’3:多個任務(wù)進程分別完成由分配進程分發(fā)的任務(wù),并生成相應(yīng)的任務(wù)結(jié)果返回至分配進程;
[0102]步驟S’4:分配進程將接收到的多個任務(wù)結(jié)果反饋至客戶端。
[0103]進一步,為了更好地分配多個任務(wù)進程的任務(wù),使其能夠