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!