我是否需要锁定在调用 signalR hub 时从列表中添加或删除对象的列表?

Do I need a lock on a list where I add or remove object from list on invocation of signalR hub?

我目前正在开发一款应用程序,玩家可以通过该应用程序参加锦标赛,并且对可以参加同一锦标赛的玩家数量没有限制。玩家正在使用带有 signalR 的 React.js 客户端,他们正在调用集线器方法进行注册和注销。对于玩家存储,我在锦标赛对象中使用了一个列表,因此当玩家在锦标赛中注册时,它会被添加到列表中,当未注册时,它会通过两种不同的方法从列表中删除。 我需要锁吗?应该如何实现?

Two or more players can enter the tournament in the exact same moment.

通常包含复数主语accessing/sharing一个或多个宾语的句子应该给出并发的指示。

可以通过多种方式锁定对象。这里有一些解决方案:

  1. 使用线程安全集合(例如 ConcurrentBag)
  2. 使用 ReaderWriterLock
  3. 锁定语句。 example