Gameserver的线程架构

时间:2012-07-16 14:57:53

标签: c# multithreading

我开始制作我的2D游戏/引擎,但不知道最好的线程架构来处理服务器端的客户端。

最初,我考虑的是每个线程的线程设计,而不是每个用户的线程。但还有另一种理想的方法吗?

在我的地图线程概念中,线程只会在地图上的玩家入口处创建,并且在清空后很快就会被销毁。但是有了这个概念,一个拥有太多玩家(例如玩家商店)的地图可能会导致严重滞后。

使用用户线程方法,会有大量线程 - 因此,内存分配很高。

那么,还有另一种更好的方法吗?

2 个答案:

答案 0 :(得分:0)

当您的服务器具有多个CPU核心时,您将从多线程扩展中获益。因此,如果你的游戏拱是纯粹的事件驱动(你永远不会在事件处理程序中等待),最好的性能将是线程数等于CPU核心数。

答案 1 :(得分:0)

您的问题的答案是使用一个线程来模拟许多游戏实例。由于游戏编程的复杂性以及以任何有意义/安全/有益的方式划分内存访问的困难,很少有游戏受益于多线程的情况。即使是你所听过的最大型游戏的服务器也是整个游戏逻辑的单线程。例如,暗黑破坏神风格的游戏每个核心将拥有1个线程,并且每个线程负责数百个游戏,并且具有用于激活游戏的十分微小的跨线程(真正的跨机器)逻辑。