Je paralelní ForEach asynchronní?
Je paralelní ForEach asynchronní?

Video: Je paralelní ForEach asynchronní?

Video: Je paralelní ForEach asynchronní?
Video: Parallel.ForEachAsync - Concurrent Tasks with a Limit - New from .NET 6 - Concurrency in C# 2024, Duben
Anonim

Celá myšlenka za tím Paralelní . Pro každého () znamená, že máte sadu vláken a každé vlákno zpracovává část kolekce. Jak jste si všimli, toto nefunguje asynchronní - wait, kde chcete uvolnit vlákno po dobu trvání asynchronní volání. Pro každého (), který podporuje asynchronní Úkol je dobrý.

S ohledem na to, jak čekáte na dokončení paralelního foreach?

Nemusíš dělat nic zvláštního, Paralelní . Pro každého () vůle Počkejte dokud nebudou všechny jeho rozvětvené úkoly kompletní . Z volajícího vlákna s ním můžete zacházet jako s jedním synchronním příkazem a například jej zabalit do try/catch. S tím to nepotřebuješ Paralelní.

Podobně je foreach asynchronní? Není asynchronní . Je to blokování. Ti, kteří se nejprve naučili jazyk jako Java, C nebo Python, než vyzkouší JS, budou zmateni, když se pokusí vložit do těla smyčky libovolné zpoždění nebo volání API.

Kromě toho, jak pokračujete v paralelním foreachu?

Když převedete smyčku na kompatibilní definici pro Paralelní . Pro každého logiku, nakonec jsi udělal z těla příkazu lambdu. No, to je akce, kterou volá Paralelní funkce. Takže vyměnit pokračovat s return a break pomocí příkazů Stop() nebo Break().

Je úloha WhenAll paralelní?

Aplikace WhenAll vrátí singl úkol to není kompletní až do každého úkol ve sbírce je dokončena. The úkoly zdá se, že vbíhá paralelní , ale nevytvářejí se žádná další vlákna. The úkoly lze dokončit v libovolném pořadí.

Doporučuje: