Контейнер для быстрой вставки - PullRequest
3 голосов
/ 02 сентября 2011

Мне нужен контейнер с быстрой вставкой и поточно-ориентированным, потому что я планирую использовать его внутри Parallel.for_each экземпляра.

Время от времени я сканирую указанный контейнер и удаляю каждые содержащиеся в нем элементы.

Какой лучший выбор с учетом этих ценовых ограничений?

Спасибо

Ответы [ 4 ]

8 голосов
/ 02 сентября 2011

Вы можете использовать ConcurrentBag<T>.По сути, пространство имен System.Collections.Concurrent стоит проверить.Если у вас есть уникальные ключи, ConcurrentDictionary<TKey, TValue> будет отличным выбором, поскольку он обеспечивает очень быстрый доступ к элементам, которым присвоен ключ.

4 голосов
/ 02 сентября 2011

В .NET 4.0 существует множество одновременных коллекций: словарь, очередь и т. Д. См. http://msdn.microsoft.com/en-us/library/dd997305.aspx

1 голос
/ 02 сентября 2011

try ConcurrentBag - это потокобезопасный и очень быстрый, так как большинство операций реализовано без блокировки ... есть также ConcurrentDictionary и т. Д. , поэтому я не уверенкакие функции вам нужны.

0 голосов
/ 02 сентября 2011

Связанный список.Это имеет быструю вставку, хотя я не уверен, существует ли поточная безопасная версия в .NET

...