Is parallel ForEach asinkroniseer?
Is parallel ForEach asinkroniseer?

Video: Is parallel ForEach asinkroniseer?

Video: Is parallel ForEach asinkroniseer?
Video: Parallel.ForEachAsync - Concurrent Tasks with a Limit - New from .NET 6 - Concurrency in C# 2024, Mei
Anonim

Die hele idee agter Parallel . Vir elke () is dat jy 'n stel drade het en elke draad verwerk deel van die versameling. Soos jy opgemerk het, werk dit nie met asinkroniseer - wag, waar jy die draad wil vrystel vir die duur van die asinkroniseer bel. Vir elke (), wat ondersteun asynchronies Taak is goed.

Met betrekking tot hierdie, hoe wag jy vir parallelle foreach om te voltooi?

Jy hoef niks spesiaals te doen nie, Parallel . Vir elke () sal wag totdat al sy vertakte take is voltooi . Van die oproepdraad kan jy dit as 'n enkele sinchrone stelling behandel en dit byvoorbeeld in 'n probeer/vang toevou. Jy het dit nie nodig nie Parallel.

Is elkeen eweneens asinchronies? Dit is nie asynchronies . Dit blokkeer. Diegene wat eers 'n taal soos Java, C of Python geleer het voordat hulle JS probeer het, sal deurmekaar raak wanneer hulle 'n arbitrêre vertraging of 'n API-oproep in hul lusliggaam probeer plaas.

Benewens dit, hoe gaan jy parallel voort?

Toe jy jou lus omskep het in 'n versoenbare definisie vir die Parallel . Vir elke logika, jy het uiteindelik die stellingliggaam 'n lambda gemaak. Wel, dit is 'n aksie wat deur die Parallel funksie. So, vervang aanhou met return, en breek met Stop() of Break()-stellings.

Is taak WhenAll parallel?

Die toepassing van WanneerAlle gee 'n enkeling terug taak dit is nie voltooi tot elke taak in die versameling voltooi is. Die take blyk om in te hardloop parallel , maar geen bykomende drade word geskep nie. Die take kan in enige volgorde voltooi.

Aanbeveel: