Programação Paralela com C# 4.0

Uma das novidades do .Net Framework 4.0 é a programação paralela, ou paralelelismo, que consiste em se utilizar os vários núcleos disponíveis nos computadores atuais, por exemplo, os famosos Core 2 Duo.

Mas como tirar proveito destes recursos em operações simples ? O que vou mostrar agora é como transformar dois comandos simples da linguagem C# com o uso da programação paralela.

Primeiramente vou montar um laço for tradicional:

1 for (int i = 0; i < 100; i++)

2             {

3                 Console.WriteLine(“Contador: {0}”, i);

4             }

Agora o mesmo for com progamação paralela:

1 Parallel.For(0, 100, delegate(int i)

2             {

3                 Console.WriteLine(“Contador: {0}”, i);

4             });

Vejam como é simples, basta usar Parallel.For() no lugar de for().

Agora vamos fazer um exemplo com ForEach, primeiro no modo tradicional:

1 List<string> lista = new List<string>() { “Carlos”, “Leandro”, “João”, “Maria” };

2 

3             foreach (string nome in lista)

4             {

5                 Console.WriteLine(“Nome: {0}”, nome);

6             }

 

Agora com programa paralela:

 

1             Parallel.ForEach<string>(lista, (nome) =>

2             {

3                 Console.WriteLine(“Nome: {0}”, nome);

4             });

5 

Novamente, basta trocar o foreach() por Parallel.ForEach().

Veja que nos dois exemplo de programação paralela, foram usados delegates() para criar a iteração nos laços.

Bom, agora você está se perguntando: “Por quê vou trocar meu for/foreach por isto ?”, e a resposta é simples: Performance.

Imagine um laço com iterações bem pesadas, como diversos cálculos, você consegue executar várias operações simultaneamente, simplesmente trocando o tipo do laço.

Outro recurso interessantíssimo da programação paralela, são as janelas de Stacks e Tasks do Debug (Debug/Windows):

image

image

Com estas janelas você pode controlar toda a execução do código paralelo, como ver o que está em execução e o que está na fila para ser executado, entre outras coisas.

Resumindo, espero que estes simples exemplos tenham demonstrado o potencial e a simplicidade da programação paralela e além destes recursos que demonstrei aqui ainda existe vários outros da programação. Vale a pena conferir!

[]s,

2 Comments


  1. E hoje em dia, com o VS2012 ? Ainda é assim que se faz ?
    Como tem sido o seu uso de Paralelelismo ?

    Reply

  2. Antonio,
    Você pode continuar fazendo da mesma maneira. Eu utilizo em alguns serviços aqui na empresa.

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

Anti-spam: complete the taskWordPress CAPTCHA


This blog is kept spam free by WP-SpamFree.