Kas paralleelne ForEach on asünkroonitud?
Kas paralleelne ForEach on asünkroonitud?

Video: Kas paralleelne ForEach on asünkroonitud?

Video: Kas paralleelne ForEach on asünkroonitud?
Video: Is Parallel.For/ForEach in C# actually worth it? (and how to modernize it) 2024, Mai
Anonim

Kogu idee taga Paralleelselt . Igaühele () tähendab, et teil on lõimede komplekt ja iga lõim töötleb osa kogust. Nagu märkasite, see ei tööta asünkr - oodake, kus soovite lõime selle ajaks vabastada asünkr helistama. Igaühele (), mis toetab asünkroonne Ülesanne on hästi.

Kuidas oodata paralleelse foreach'i lõpuleviimist?

Sa ei pea midagi erilist tegema, Paralleelselt . Igaühele () tahe oota kuni kõik selle hargnenud ülesanded on täielik . Kutsuvast lõimest saate seda käsitleda ühe sünkroonse lausena ja näiteks mässida selle try/catch sisse. Teil pole seda vaja Paralleelselt.

Samamoodi, kas foreach on asünkroonne? See ei ole asünkroonne . See blokeerib. Need, kes õppisid enne JS-i proovimist selgeks mõne keele (nt Java, C või Python), satuvad segadusse, kui proovivad oma silmuse kehasse lisada suvalise viivituse või API-kutse.

Lisaks sellele, kuidas te paralleelselt foreachiga jätkate?

Kui teisendasite oma tsükli ühilduvaks definitsiooniks Paralleelselt . Igaühele loogika, tegite väite keha lõpuks lambda. Noh, see on toiming, mida kutsutakse Paralleelselt funktsiooni. Niisiis, asendage jätka koos return, ja katkesta Stop() või Break() lausetega.

Kas ülesanne WhenAll on paralleelne?

Taotlus Millal Kõik tagastab singli ülesanne mis ei ole täielik enne iga ülesanne kollektsioonis on valminud. The ülesandeid paistab sisse jooksvat paralleelselt , kuid täiendavaid lõime ei looda. The ülesandeid saab täita mis tahes järjekorras.

Soovitan: