У меня есть основной поток, который заполняет List<T>
. Далее я создаю цепочку объектов, которые будут выполняться в разных потоках, требуя доступа к списку. Первоначальный список никогда не будет записан после его создания. Моя мысль заключалась в том, чтобы передать список как IEnumerable<T>
для объектов, выполняющихся на других потоках, главным образом из-за того, что они не позволяют тем, кто реализует эти объекты, записывать в список по ошибке. Другими словами, если исходный список гарантированно не записывается, безопасно ли для нескольких потоков использовать .Where
или foreach
в IEnumerable?
Я не уверен, что итератор сам по себе является потокобезопасным, если исходная коллекция никогда не изменяется.