21
2010
Parallel Tasks – Ejecucion en paralelo con C# 4.0
Saludos a todos nuevamente!!!
Depues de largo tiempo de no contribuir, traigo un poco de las novedades para el Framework 4.0 y es la clase Parallel.
Si hemos leido un poco sobre esto, sabemos que la clase Parallel nos provee facilidad al momento de la programacion en paralelo dentro de nuestros procesadores, con capacidad de definir un limite de ejecuciones dentro del procesador.
Ahora veremos, de manera rapida, como utilizar la clase Parallel y su metodo Invoke para llamar a varios metodos de manera simultanea.
Como novedad, tenemos nuestro nuevo espacio de nombres System.Threading.Task que nos habilitara la clase Parallel. Luego crearemos tres metodos sencillos que imprimen un arreglo de numeros, y con cada impresion de numeros genera una pausa de 5 segundos, los metodos son los siguientes:
static void WritingNumbers1()
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine(i.ToString());
Thread.Sleep(5000);
}
}
static void WritingNumbers2()
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine(i.ToString());
Thread.Sleep(5000);
}
}
static void WritingNumbers3()
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine(i.ToString());
Thread.Sleep(5000);
}
}
Ahora, en el metodo principal tendremos la parte interesante, que sera la llamada a todos estos metodos.
Llamamos al metodo estatico Invoke de la clase Parallel, este metodo tiene dos sobrecargas, y una de ellas es un arreglo de delegates de tipo Action, estos nos interesan, ya que crearemos instancias abstractas de los delegados con los nombres de los metodos que tenemos definidos. La linea quedaria mas o menos asi:
Parallel.Invoke(new Action(WritingNumbers1), new Action(WritingNumbers2), new Action(WritingNumbers3));
Esta linea nos dara la facilidad de la ejecucion paralela de estos metodos, esta es una de las nuevas caracteristicas del Framework 4.0.
El codigo completo de la aplicacion esta a continuacion. Cualquier duda sobre el tema o algo que no este bien solo comenten y lo revisamos para tener el material actualizado. Gracias a todos!!!
using System;
using System.Threading;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Parallel.Invoke(new Action(WritingNumbers1), new Action(WritingNumbers2), new Action(WritingNumbers3));
Console.Read();
}
static void WritingNumbers1()
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine(i.ToString());
Thread.Sleep(5000);
}
}
static void WritingNumbers2()
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine(i.ToString());
Thread.Sleep(5000);
}
}
static void WritingNumbers3()
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine(i.ToString());
Thread.Sleep(5000);
}
}
}
}
Related Posts
4 Comments + Add Comment
Leave a comment
Misc
Categories
- Arroba de Oro (2)
- C# Development (14)
- Charlas (1)
- Crystal Reports (1)
- Desarrollo (2)
- Desktop Development (3)
- Microsoft (1)
- Microsoft El Salvador (1)
- Microsoft Expresion Studio (2)
- Microsoft Sql Server (3)
- Microsoft Visual Studio (13)
- Noticias (3)
- Principal (12)
- Silverlight (4)
- Web Development (1)
- Windows (1)
- Windows Phone (1)
- Windows Presentation Foundation (1)
- Xml (1)

An article by








Muy bien es lo que busco… Gracias interesante blog.
Interesante aporte, sería bueno explicar las diferencias entre los mecanismos existentes para múltiples y las ventajas que presentan los nuevos mecanismos.
Saludos!
Quise decir múltiples hilos
interesante, una pregunta se puede pasar parámetros a algunos de los tres métodos…
sistema multi-agente. busquen esto en google interesante lectura