Parallel ForEach è asincrono?
Parallel ForEach è asincrono?

Video: Parallel ForEach è asincrono?

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

L'intera idea dietro Parallelo . Per ciascuno () è che hai un set di thread e ogni thread elabora parte della raccolta. Come hai notato, questo non funziona con asincrono - wait, dove vuoi rilasciare il thread per la durata del asincrono chiamata. Per ciascuno (), che supporta asincrono Il compito va bene.

A questo proposito, come si attende il completamento di Parallel Foreach?

Non devi fare niente di speciale, Parallelo . Per ciascuno () volere aspettare finché tutti i suoi compiti ramificati non saranno completare . Dal thread chiamante puoi trattarlo come una singola istruzione sincrona e ad esempio avvolgerlo all'interno di un try/catch. Non ne hai bisogno con Parallelo.

Allo stesso modo, foreach è asincrono? Non è asincrono . Sta bloccando. Coloro che hanno appreso per la prima volta un linguaggio come Java, C o Python prima di provare JS si confonderanno quando proveranno a inserire un ritardo arbitrario o una chiamata API nel loro corpo del ciclo.

Accanto a questo, come si continua in parallelo per ciascuno?

Quando hai convertito il tuo loop in una definizione compatibile per il Parallelo . Per ciascuno logica, hai finito per rendere il corpo dell'istruzione un lambda. Bene, questa è un'azione che viene chiamata dal Parallelo funzione. Quindi, sostituisci Continua con return e break con le istruzioni Stop() o Break().

Il compito WhenAll è parallelo?

L'applicazione di QuandoTutto restituisce un singolo compito che non è completo fino a quando ogni compito nella raccolta è completata. Il compiti sembra correre dentro parallelo , ma non vengono creati thread aggiuntivi. Il compiti può completare in qualsiasi ordine.

Consigliato: