Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

?id=1c7641c5-e957-45ca-b1e0-bd1a23c55bac

TRUCO: Procesado de listas en paralelo de forma sencilla

La Task Parallel Library es una biblioteca que apareció con .NET 4.0 y cuya misión es facilitar la vida a los programadores a la hora de construir aplicaciones multi-subproceso y con hilos.

La biblioteca es muy extensa pero tiene pequeñas joyas a las que les podemos sacar partido de manera directa y sencilla, sin necesidad de meternos en honduras.

Una de estas joyas es la versión paralela de un bucle For Each.

La idea es que si tenemos que procesar una lista de objetos de cualquier tipo (desde simples números o cadenas hasta objetos más complejos) y no nos importa en qué orden se procesen, sólo que se les aplique a todos una misma función, entonces el ForEach paralelo es lo que necesitamos para agilizar nuestra aplicación.

Este método cogerá una lista de objetos y los procesará usando múltiples hilos y por lo tanto sacando partido a sistemas multi-núcleo y multi-procesador, o bien usando de manera más eficiente el tiempo asignado a cada hilo en un procesador.

Un ejemplo sencillo sería este, para procesar una lista de colores:

Codigo de porceso de listas en paralelo

   
class Program {
        static void Main(string[]args)
        {
            ParallelLoop();
            Console.ReadLine();
        }
        public static void ParallelLoop()
        {
            var colors = new List{"red", "white", "blue", "green", "yellow","black"};
            System.Threading.Tasks.Parallel.ForEach(colors, clr => Console.WriteLine(clr));
    
        }
}
 

Si lo ejecutamos repetidas veces vermos que todos ellos se procesan, pero cada vez en un orden diferente, en función de cómo se hayan ejecutado los hilos correspondientes:

Codigo de porceso de listas en paralelo ejecutandose

Como vemos lo único que hay que hacer es pasar la lista y un delegado a una función (en este caso una expresión lambda) a Parallel.ForEach, y listo.

Fecha de publicación:
José Manuel Alarcón Fundador de campusMVP, es ingeniero industrial y especialista en consultoría de empresa. Ha escrito diversos libros, habiendo publicado hasta la fecha cientos de artículos sobre informática e ingeniería en publicaciones especializadas. Microsoft lo ha reconocido como MVP (Most Valuable Professional) en desarrollo web desde el año 2004 hasta la actualidad. Puedes seguirlo en Twitter en @jm_alarcon o leer sus blog técnico o personal. Ver todos los posts de José Manuel Alarcón
Archivado en: General

¿Te ha gustado este post?
Pues espera a ver nuestro boletín mensual...

Suscríbete a la newsletter

La mejor formación online para desarrolladores como tú

Agregar comentario

Los datos anteriores se utilizarán exclusivamente para permitirte hacer el comentario y, si lo seleccionas, notificarte de nuevos comentarios en este artículo, pero no se procesarán ni se utilizarán para ningún otro propósito. Lee nuestra política de privacidad.