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