目前我正计划用 C# 为 XNA 游戏设计一个专用服务器,最多 32 个玩家可以同时连接。我有过使用 System.Net 建立网络的经验,但我以前从未与大量玩家打过交道。
我从心里知道创建和销毁线程(尤其是每个玩家一个)不是一个好主意,而且由于“没有线程时排队等候”,我不确定是否使用线程池可用”的性质。因此,我决定(几乎是我唯一的最后一个选择)使用 Async 来处理大量客户端。
但我仍然不确定这是否是一个明智的选择,或者我是否应该使用其他东西来满足我的苛刻需求。
如果这个问题听起来很糟糕,我深表歉意,但我很困惑 - 非常感谢您的帮助!
最佳答案
如果游戏的限制确实是 32 个并发用户,也许还有少数观察者,那么线程就没问题,尤其是当您发现使用线程比回调更容易编写代码时。 (您必须适本地使用 coordinate access to shared data structures,并且其复杂性可能超过相应的 event-based 设计。)
我什至不会为只有 32 个并发用户的线程池烦恼。
线程的吞吐量限制显示大约 100 个线程(当然,取决于实现细节)。如果您从不打算同时使用 100 个用户(例如,这将是一个负载很轻的 IRC 服务器),那么就不需要异步事件模型,除非您和您的团队对事件模型更放心。
关于c# - 对于最多 32 位玩家同时使用 C# 进行游戏的专用服务器,异步 TCP 网络是否是更好的选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8949916/