Paralelul ForEach este asincron?
Paralelul ForEach este asincron?

Video: Paralelul ForEach este asincron?

Video: Paralelul ForEach este asincron?
Video: Entiende la ASINCRONÍA en JAVASCRIPT | Promesas y Async Await | @Garajedeideas #programacion #short 2024, Aprilie
Anonim

Toată ideea din spate Paralel . Pentru fiecare () înseamnă că aveți un set de fire și fiecare thread procesează o parte din colecție. După cum ați observat, acest lucru nu funcționează asincron - așteptați, unde doriți să eliberați firul pe toată durata asincron apel. Pentru fiecare (), care susține asincron Sarcina este bine.

În ceea ce privește acest lucru, cum așteptați ca foreach paralel să se finalizeze?

Nu trebuie să faci nimic special, Paralel . Pentru fiecare () voi aștepta până când toate sarcinile sale ramificate sunt complet . Din firul apelant îl puteți trata ca pe o singură instrucțiune sincronă și, de exemplu, îl puteți include într-un try/catch. Nu ai nevoie de asta cu Paralel.

În mod similar, este foreach asincron? Nu este asincron . Se blochează. Cei care au învățat pentru prima dată un limbaj precum Java, C sau Python înainte de a încerca JS vor fi confuzi când vor încerca să introducă o întârziere arbitrară sau un apel API în corpul buclei lor.

Pe lângă asta, cum continuați în paralel?

Când v-ați convertit bucla într-o definiție compatibilă pentru Paralel . Pentru fiecare logic, ai ajuns să faci din corpul declarației un lambda. Ei bine, aceasta este o acțiune care este apelată de către Paralel funcţie. Deci, înlocuiți continua cu return și break cu instrucțiuni Stop() sau Break().

Sarcina WhenAll este paralelă?

Aplicarea de Când Toate returnează un singur sarcină asta nu este complet până la fiecare sarcină în colecție este finalizată. The sarcini par să alerge înăuntru paralel , dar nu sunt create fire suplimentare. The sarcini se poate completa în orice ordine.

Recomandat: