O ForEach paralelo é assíncrono?
O ForEach paralelo é assíncrono?

Vídeo: O ForEach paralelo é assíncrono?

Vídeo: O ForEach paralelo é assíncrono?
Vídeo: Part 52 :- Parallel ForEach Loop in C# |Multithreading/asynchronous and Parallel Programming in C# 2024, Maio
Anonim

Toda a ideia por trás Paralelo . Para cada () é que você tem um conjunto de threads e cada thread processa parte da coleção. Como você notou, isso não funciona com assíncrono - aguarde, onde você deseja liberar o tópico durante o assíncrono ligar. Para cada (), que suporta assíncrono A tarefa está bem.

Com relação a isso, como você espera que foreach paralelo seja concluído?

Você não precisa fazer nada de especial, Paralelo . Para cada () vai esperar até que todas as suas tarefas ramificadas sejam completo . Do thread de chamada, você pode tratá-lo como uma única instrução síncrona e, por exemplo, envolvê-lo em um try / catch. Você não precisa disso com Paralelo.

Da mesma forma, foreach é assíncrono? Não é assíncrono . Está bloqueando. Aqueles que aprenderam uma linguagem como Java, C ou Python antes de tentarem JS ficarão confusos quando tentarem colocar um atraso arbitrário ou uma chamada de API em seu corpo de loop.

Além disso, como você continua em paralelo para cada um?

Quando você converteu seu loop em uma definição compatível para o Paralelo . Para cada lógica, você acabou tornando o corpo da instrução um lambda. Bem, essa é uma ação que é chamada pelo Paralelo função. Então, substitua Prosseguir com retorno e interromper com instruções Stop () ou Break ().

A tarefa WhenAll é paralela?

A aplicação de WhenAll retorna um único tarefa que não está completo até que cada tarefa na coleção é concluída. o tarefas parece correr em paralelo , mas nenhum encadeamento adicional é criado. o tarefas pode ser concluído em qualquer ordem.

Recomendado: