我正在开发多人游戏,我有一个写在asp.net
. 游戏用户向服务器发送请求以寻找对手并加入某种战斗。战斗请求可以有一些参数,但也可能没有(估计是最流行的场景),所以发送方应该连接到任何已经发送过请求的用户并等待连接。
将所有等待请求存储在线程安全集合中是个好主意吗?它总是会包含相当多的元素(因为很快就可以找到战斗的匹配项),但是,很多线程会尝试一次访问这个集合。为每个N
请求创建不同的集合是个好主意吗?的最佳尺寸是N
多少?或者也许还有其他想法?我的关键问题是在不损害服务器性能的情况下快速找到匹配项,即使当前连接的数量非常大。
UPD
看来我没有很清楚地描述我的问题。所有战斗信息——参与用户、战斗中的动作、获胜者等,都存储在数据库中。我需要的是处理加入战斗的请求(请求可能只包含发送者 ID 和战斗过滤器)。一般情况下,对手会很快找到,所以不需要存储请求数据(找到比赛后应该删除,所有战斗数据都会存储在数据库中),但是,我必须准备好处理大量的同时提出要求。