服務器端高性能網絡編程的核心在于架構,而架構的核心在于進程-線程模型的選擇。
作為服務器需要做網絡數據的收發,需要做數據庫拉取和保存,需要做日志存儲,需要做常規的游戲邏輯處理.....在這里我把這些功能劃分為三個大的線程類型:IO線程,事件線程,第三方庫線程。
I/O線程,這種線程的主循環是多路復用,阻塞地等待在select/poll/epoll_wait系統調用上。這類線程也處理定時事件。當然它的功能不止IO,有些簡單計算也可以放在其中,比如消息的編碼或者解碼(序列化和反序列化)。在這里我之前有文章介紹過一種設計模式:Reactor 模式,不明白的看這里游戲服務器架構:設計模式之Reactor反應堆,
其中心思想是將所有要處理的I/O事件注冊到一個中心I/O多路復用器上,同時主線程阻塞在多路復用器上,一旦有I/O事件到來或是準備就緒,多路復用器將返回并將相應I/O事件分發到對應的處理器中。