Paralelizando no .NET

Paralelizar aplicações não é uma tarefa simples dependendo da linguagem com que você está trabalhando. No C# temos algumas facilidades com a utilização de Tasks mas nem sempre elas são necessárias.

Nesse post vou falar sobre a classe Parallel que nos permite realizar tarefas simples paralelamente como por exemplo um for ou percorrer uma lista utilizando um Foreach ou aplicar até mesmo no Linq.

Laços de repetição – For

Com a classe Parallel, podemos executar laços de repetição de forma paralela caso você julgue que seja necessário. Começando pelo for:

ParallelLoopResult result = Parallel.For(0, 100, contador => {

                                                              Console.WriteLine("Contador:  "+contador");
                                                              });

No exemplo acima temos a utilização da maneira mais simplificada do método For, onde os parâmetros utilizados são o inicio do contador, até qual numero ele irá parar (excluindo o numero) e uma Action que terá como parâmetro o numero do contador e o que queremos que seja realizado.

Atenção: O método For sempre incrementa mais um ao contador e até o momento não há maneira de mudar.

Laços de repetição – Foreach

A implementação do foreach é bem similar e até mais simples que a do for. Precisamos apenas passar um parâmetro que herde IEnumerable como por exemplo um List e uma Action que terá como parâmetro o item que estará sendo percorrido pela task.

List<int> numeros = new List<int> { 0, 1, 2, 3, 4, 5, 6 };


Parallel.ForEach(numeros, numero =>
            {
                if (numero % 2 == 0)
                {
                   // É PRIMO
                }
            });

Simples não? Também temos como aplicar a paralelização em Linq mas vou deixar para o próximo post!