Есть ли потокобезопасный и общий IList <T>в c #? - PullRequest
6 голосов
/ 16 июля 2010

Является ли List<T> или HashSet<T> или что-либо еще встроенным в threadsafe только для добавления?

Мой вопрос похож на Threadsafe и общий массив? , но я только ищубезопасность при добавлении в этот список потоков, а не при удалении или чтении из него.

Ответы [ 2 ]

9 голосов
/ 16 июля 2010
System.Collections.Concurrent.BlockingCollection<T>

Ссылка.

7 голосов
/ 16 июля 2010

.NET 4.0 вы можете использовать BlockingCollection<T>, но он по-прежнему предназначен для обеспечения безопасности потоков для всех операций, а не только для сложения.

Как правило, редко бывает проектировать структуру данных, которая гарантирует, что некоторые операции будут безопасны для параллелизма, а другие - нет. Если вы обеспокоены тем, что при доступе к коллекции для чтения возникают накладные расходы, вам следует провести некоторый сравнительный анализ, прежде чем пытаться найти специализированные коллекции для решения этой проблемы.

...