Le ForEach parallèle est-il asynchrone ?
Le ForEach parallèle est-il asynchrone ?

Vidéo: Le ForEach parallèle est-il asynchrone ?

Vidéo: Le ForEach parallèle est-il asynchrone ?
Vidéo: Nouveauté .NET 6 : des appels parallèles ET asynchrones, en utilisant le MAX des capacités ? 2024, Avril
Anonim

Toute l'idée derrière Parallèle . Pour chaque () est que vous avez un ensemble de threads et que chaque thread traite une partie de la collection. Comme vous l'avez remarqué, cela ne fonctionne pas avec asynchrone - wait, où vous souhaitez libérer le fil pour la durée de la asynchrone appel. Pour chaque (), qui prend en charge asynchrone La tâche est bien.

À ce sujet, comment attendez-vous que le foreach parallèle se termine ?

Vous n'avez rien à faire de spécial, Parallèle . Pour chaque () volonté attendre jusqu'à ce que toutes ses tâches ramifiées soient Achevée . À partir du thread appelant, vous pouvez le traiter comme une seule instruction synchrone et, par exemple, l'envelopper dans un try/catch. Tu n'as pas besoin de ça avec Parallèle.

De même, foreach est-il asynchrone ? Ce n'est pas asynchrone . C'est bloquant. Ceux qui ont d'abord appris un langage comme Java, C ou Python avant d'essayer JS seront confus lorsqu'ils essaieront de mettre un délai arbitraire ou un appel d'API dans leur corps de boucle.

A côté de ça, comment continuez-vous en parallèle foreach ?

Lorsque vous avez converti votre boucle en une définition compatible pour le Parallèle . Pour chaque logique, vous avez fini par faire du corps de la déclaration un lambda. Eh bien, c'est une action qui est appelée par le Parallèle fonction. Alors, remplacez Continuez avec return et break avec les instructions Stop() ou Break().

La tâche WhenAll est-elle parallèle ?

L'application de QuandTout renvoie un seul tâche ce n'est pas terminé avant chaque tâche dans la collection est terminée. Les Tâches semblent courir dans parallèle , mais aucun thread supplémentaire n'est créé. Les Tâches peut compléter dans n'importe quel ordre.

Conseillé: