C #: Как я могу сделать поток IEnumerable <T> безопасным?
Скажем, у меня есть этот простой метод:
public IEnumerable<uint> GetNumbers()
{
uint n = 0;
while(n < 100)
yield return n++;
}
Как бы вы сделали эту тему безопасной? Под этим я подразумеваю, что вы получите этот перечислитель один раз, и несколько потоков будут обрабатывать все числа без дубликатов.
Я полагаю, что где-то нужно использовать блокировку, но где эта блокировка должна быть, чтобы блок итератора был потокобезопасным? Что, в общем, нужно помнить, если вы хотите потокобезопасныйIEnumerable<T>
? Или, скорее, я думаю, это было бы безопасным потокомIEnumerator<T>
? ...