Какой потокобезопасный набор подходит для этого сценария?

У меня есть одноэлементный класс, обрабатывающий запросы подписки и отмены подписки от разных клиентов, работающих в разных потоках. Синглтон содержит коллекцию подписчиков. Перед добавлением или удалением класс должен проверить, что элемент еще не был добавлен или удален.

Обычно я реализую это с помощью вызова List или HashSet, вызывающего Contains перед каждой операцией, но если я хочу использовать один из новых классов в пространстве имен System.Collections.Concurrent, единственная опция, которую я вижу, - это использовать ConcurrentDictionary с фиктивным значение.

Это мой лучший вариант или я что-то пропускаю? Кстати, производительность не является важным фактором для рассмотрения.

2 ответа

Я думаю, что вы должны придерживаться ConcurrentDictionary...

Почему вы не используете ConcurrentDictionary с поддержкой очереди блокировки. Кажется, что Blocking Queue соответствует схеме вашего производителя / потребителя и ConcurrentDictionary для ваших поисков.

Другие вопросы по тегам