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):
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,
Permalink
E hoje em dia, com o VS2012 ? Ainda é assim que se faz ?
Como tem sido o seu uso de Paralelelismo ?
Permalink
Antonio,
Você pode continuar fazendo da mesma maneira. Eu utilizo em alguns serviços aqui na empresa.