我正在考虑使用netty为AI机器人竞赛实现服务器。聊天示例是一个良好的开端,因为我设计的协议类似于基于行的聊天服务器,除了一个主要区别。机器人被要求转弯并有最长的响应时间限制。如果机器人未能及时响应,服务器将为该机器人执行默认操作。
特别是我正在实施抵抗运动游戏。领导者将选择一个团队,然后所有机器人都必须提交赞成或反对票。我想等到所有机器人都投票或发生超时(例如 2 秒),在这种情况下,我将为尚未响应的机器人分配一个操作。
如何使用 Netty 实现这一点?
我对这个问题的解决方案是让一个 Game 对象在线程上运行,该线程使用 CountDownLatch 等待时间限制并从 Netty 处理程序收集所有投票。任何缺失的投票都将获得默认投票。
如果我想避免每个游戏都有一个线程,我已经构建了一个 Fiber 库,它提供了协作的轻量级线程。然后,每个 Game 对象可以是每个 CPU 内核的线程之间的光纤负载平衡。