Как хранить список пользователей, который будет часто изменяться?
Речь идёт о небольшой сетевой игре. Пользователи подключаются к серверу и желают начать играть. Для этого в списке тех, кто тоже желает, происходит поиск по уровню игрока. Найден - убираем из списка. Не найден - попадает сам в конец списка и ждёт. Каким образом хранить данные список, чтобы обеспечить возможность работы с ним всем потокам сервера, и чтобы операции поиска/удаления/добавления происходили максимально быстро?
Всегда храним промежуточный централизованный результат в памяти и при его изменении отправляем флаг "обновить состояние списка" всем клиентам синхронно (multicast).
отсортированный список -> бинарный поиск (время поиска и всего прочего O(lg N))
или словарь списков (очередей), где ключ – уровень игрока (на базе очередей будет O(1))