Какой потокобезопасный набор подходит для этого сценария? - PullRequest
0 голосов
/ 26 октября 2011

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

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

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

Ответы [ 2 ]

0 голосов
/ 26 октября 2011

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

0 голосов
/ 26 октября 2011

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

...