¿Es ForEach paralelo asíncrono?
¿Es ForEach paralelo asíncrono?

Video: ¿Es ForEach paralelo asíncrono?

Video: ¿Es ForEach paralelo asíncrono?
Video: Programación en paralelo con la clase Parallel y su método ForEach en C#.Net y C# .Net Core 2024, Noviembre
Anonim

Toda la idea detrás Paralelo . Para cada () es que tiene un conjunto de subprocesos y cada subproceso procesa parte de la colección. Como notó, esto no funciona con asincrónico - aguardar, donde desea liberar el hilo durante la duración del asincrónico llama. Para cada (), que admite asincrónico La tarea está bien.

Con respecto a esto, ¿cómo espera a que se complete el foreach paralelo?

No tienes que hacer nada especial Paralelo . Para cada () voluntad Espere hasta que todas sus tareas ramificadas sean completo . Desde el hilo de llamada, puede tratarlo como una única declaración sincrónica y, por ejemplo, envolverlo dentro de un try / catch. No necesitas eso con Paralelo.

Del mismo modo, ¿foreach es asincrónico? No lo es asincrónico . Está bloqueando. Aquellos que aprendieron por primera vez un lenguaje como Java, C o Python antes de probar JS se confundirán cuando intenten poner un retraso arbitrario o una llamada a la API en su cuerpo de bucle.

Además de esto, ¿cómo se continúa en paralelo para cada uno?

Cuando convirtió su bucle en una definición compatible para el Paralelo . Para cada lógica, terminó convirtiendo el cuerpo de la declaración en un lambda. Bueno, esa es una acción a la que llama el Paralelo función. Entonces, reemplace Seguir con return, y romper con las declaraciones Stop () o Break ().

¿La tarea WhenAll es paralela?

La aplicación de Cuando todo devuelve un solo tarea que no está completo hasta cada tarea en la colección se completa. los Tareas parece correr en paralelo , pero no se crean subprocesos adicionales. los Tareas puede completar en cualquier orden.

Recomendado: