如果我的MMORPG服务器有一个运行异步套接字和异步数据包处理程序的线程,在这一个线程中,我有一个包含游戏中所有实体的静态World。
如果异步数据包处理器接收到攻击消息,导致搜索世界上的实体以确定目标,是否会有任何线程问题。
同时,静态的World Proc方法增加了包含怪物实体的字典的大小,增加了产生的额外怪物。
如果这一切都在同一个线程上,服务器会爆炸吗?
发布于 2013-02-22 10:33:07
如果我一行回答。服务器将会爆炸。因为网络活动和游戏逻辑处于同一线程中。正如您所提到的,您将需要高网络使用率。
如果你看看F#的话,我真的很喜欢。它有你需要的所有东西。据我所知是从问题中得到的。很少有东西像集合变化一样,异步在语言中是默认的。即使是Nodejs,它也值得一试。但同样,这完全取决于需求。虽然我试着解释一些关键字,这可能会帮助你做出决定。
非阻塞:这意味着线程在事件时不会被阻塞。它不会等待函数等待另一个函数执行。但这并不意味着你不能阻止它。在任何情况下,它都是单个线程。
Async:有点像这样。但在C# 5中,async附带了关键字,所以你不需要在编程中做线程部分。
并行处理:在游戏开发中,并行处理非常重要。现在,你可以使用多线程或者只使用TPL。
对于基于UI的游戏(其中有许多对象),我强烈建议您将处理线程和UI线程分开,以改善用户体验。否则,当您处理数据时,FPS将会关闭。
如果需要任何进一步的信息,请告诉我。
如果你不注意服务器,它就不会宕机。
https://stackoverflow.com/questions/15015784
复制相似问题