Decir que tengo este sencillo método:C#: ¿Cómo puedo hacer que un subproceso IEnumerable <T> sea seguro?
public IEnumerable<uint> GetNumbers()
{
uint n = 0;
while(n < 100)
yield return n++;
}
¿Cómo le hacen de este hilo seguro? Y con eso me refiero a que obtendrías ese enumerador una vez, y harías que múltiples hilos manejen todos los números sin que nadie obtenga duplicados.
Supongo que es necesario usar un bloqueo en alguna parte, pero ¿dónde debe estar ese bloqueo para que un bloque iterador sea seguro para subprocesos? ¿Qué necesita recordar, en general, si quiere un hilo seguro IEnumerable<T>
? O mejor dicho, supongo que sería un hilo de seguridad IEnumerator<T>
...?
(En caso de que no esté revisando mis comentarios) Acabo de escribir en un blog acerca de esto: http://msmvps.com/blogs/jon_skeet/archive/2009/10/23/iterating-atomically.aspx –
Oh , ¡Gracias! Este sitio debería tener una especie de notificación de Facebook cuando alguien comenta después de tu comentario o algo así ... jeje. – Svish