【发布时间】:2018-05-03 02:32:50
【问题描述】:
我正在开发一个多人游戏,它有一个大厅,人们可以在其中加入不同的游戏。
我很好奇是否应该为每个游戏室创建一个线程。
我正在使用 java.io,所以我已经为每个播放器设置了一个线程。
即使每个线程上的负载不重,也会有很多线程会减慢我的服务器速度吗?
如果我为 100 个玩家和 30 个房间托管一个服务器,平均虚拟服务器可以同时处理 150 个线程吗?还是会影响游戏体验?
这是一个实时游戏,我需要为每个位置更新 (UDP) 发送即时消息?
【问题讨论】:
-
一般来说,线程数多于你可以同时做的事情会损害性能。但是由于数字如此之小,性能上的微小差异可能不值得额外的复杂性。 (在不切换线程 130 次左右的情况下,您无法为 100 个客户端和 30 个房间中的每一个都做一点工作,从而导致性能成本。通过更高效的设计,可以避免所有这些上下文切换。 )
-
@DavidSchwartz 是的,每个玩家都有单独的对象,并且连接使设计更加容易。感谢您的建议,最好专注于我的设计而不是过多地担心其他事情:)
标签: java multithreading networking server multiplayer