Estou um pouco confuso Parallel.ForEach
.
O que é Parallel.ForEach
e o que exatamente faz?
Por favor, não faça referência a nenhum link do MSDN.
Aqui está um exemplo simples:
string[] lines = File.ReadAllLines(txtProxyListPath.Text);
List<string> list_lines = new List<string>(lines);
foreach (string line in list_lines)
{
//My Stuff
}
Como posso reescrever este exemplo com Parallel.ForEach
?
c#
multithreading
.net-4.0
parallel.foreach
Luz cinza
fonte
fonte
Parallel
classe e o uso do PLINQ.foreach
. A diferença é que a versão paralela pode executar muitas "ações" ao mesmo tempo. Na maioria dos casos (dependendo de qual computador está executando o código, de quão ocupado ele está e de outras coisas), será mais rápido e essa é a vantagem mais importante. Observe que, ao fazer isso em paralelo, não é possível saber em que ordem os itens são processados. Com um habitual (serial)foreach
, você tem a garantia de quelines[0]
vem primeiro, depoislines[1]
e assim por diante.Respostas:
fonte
List<T>
;)Loop Foreach:
Parallel.ForEach:
O exemplo a seguir demonstra claramente a diferença entre o loop foreach tradicional e
Exemplo Parallel.ForEach ()
Resultado
Usando o exemplo Parallel.ForEach
fonte
Isso fará com que as linhas sejam analisadas em paralelo, dentro do loop. Se você deseja uma introdução mais detalhada e menos "orientada a referência" à classe Parallel, escrevi uma série sobre o TPL que inclui uma seção em Parallel.ForEach .
fonte
Para arquivos grandes, use o seguinte código (você tem menos memória)
fonte
Essas linhas funcionaram para mim.
fonte