Is parallel ForEach async?
Is parallel ForEach async?

Video: Is parallel ForEach async?

Video: Is parallel ForEach async?
Video: Is Parallel.For/ForEach in C# actually worth it? (and how to modernize it) 2024, Mei
Anonim

Het hele idee erachter Parallel . Voor Elk () is dat je een set threads hebt en dat elke thread een deel van de verzameling verwerkt. Zoals je hebt gemerkt, werkt dit niet met asynchrone - wacht, waar u de thread wilt vrijgeven voor de duur van de asynchrone telefoongesprek. Voor Elk (), die ondersteunt asynchroon Taak is goed.

Wat dit betreft, hoe wacht u tot parallelle foreach is voltooid?

Je hoeft niets bijzonders te doen, Parallel . Foreach () zullen wacht totdat al zijn vertakte taken zijn compleet . Vanuit de aanroepende thread kun je het behandelen als een enkele synchrone instructie en het bijvoorbeeld in een try/catch wikkelen. Dat heb je niet nodig met Parallel.

Evenzo, is foreach asynchroon? Het is niet asynchroon . Het blokkeert. Degenen die eerst een taal als Java, C of Python hebben geleerd voordat ze JS proberen, zullen in de war raken wanneer ze een willekeurige vertraging of een API-aanroep in hun loop-body proberen te plaatsen.

Daarnaast, hoe ga je verder in parallel foreach?

Wanneer je je lus hebt omgezet in een compatibele definitie voor de Parallel . Foreach logica, uiteindelijk maakte je van de statement body een lambda. Nou, dat is een actie die wordt opgeroepen door de Parallel functie. Dus vervangen doorgaan met met return, en break met Stop() of Break() statements.

Is taak WhenAll parallel?

De toepassing van WanneerAlle geeft een single terug taak dat is pas compleet als elke taak in de collectie is voltooid. De taken lijken binnen te lopen parallel , maar er worden geen extra threads gemaakt. De taken in willekeurige volgorde kan invullen.

Aanbevolen: