Безопасен ли поток конструктора List <T>? - PullRequest
3 голосов
/ 01 марта 2010

В частности, является ли List (T) (IEnumerable (T)) поточно-ориентированным, если IEnumerable, используемый для инициализации списка, изменяется во время создания нового списка?

Ответы [ 2 ]

6 голосов
/ 01 марта 2010

Это не имеет ничего общего с тем, что конструктор List является потокобезопасным, это зависит только от того, является ли IEnumerable потокобезопасным.

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

1 голос
/ 01 марта 2010

Это на самом деле не до составляемого списка, а скорее до конкретного IEnumerable<T>, который повторяется. этот поток безопасен? Если он не поддерживает одновременную итерацию и редактирование, ожидайте исключения (или, что еще хуже, непредсказуемых результатов). Большинству итераторов .NET это не понравится; 4.0 вводит больше параллельных коллекций, или вы можете написать свой собственный.

Если список успешно создан createD (итерирует источник), то созданный источник не окажет никакого влияния - оба отключены.

...