Асинхронен ли е паралелният ForEach?
Асинхронен ли е паралелният ForEach?

Видео: Асинхронен ли е паралелният ForEach?

Видео: Асинхронен ли е паралелният ForEach?
Видео: RS School 2020Q3 - Event Loop 2024, Ноември
Anonim

Цялата идея зад Паралелно . За всеки () е, че имате набор от нишки и всяка нишка обработва част от колекцията. Както забелязахте, това не работи с асинхронно - await, където искате да освободите нишката за продължителността на асинхронно повикване. За всеки (), който поддържа асинхронен Задачата е добре.

По отношение на това, как чакате паралелният foreach да завърши?

Не е нужно да правите нищо специално, Паралелно . За всеки () ще изчакайте докато всичките му разклонени задачи са завършен . От извикващата нишка можете да го третирате като единичен синхронен израз и например да го увиете в try/catch. Не ти трябва това с Паралелно.

По същия начин, foreach е асинхронен? Не е асинхронен . Блокира се. Тези, които за първи път са научили език като Java, C или Python, преди да изпробват JS, ще се объркат, когато се опитат да поставят произволно забавяне или API извикване в тялото на цикъла си.

Освен това, как продължавате паралелно foreach?

Когато конвертирате своя цикъл в съвместима дефиниция за Паралелно . За всеки логика, накрая направихте тялото на изявлението ламбда. Е, това е действие, което се извиква от Паралелно функция. Така че сменете продължи с return и break с операторите Stop() или Break().

Паралелна ли е задачата WhenAll?

Приложението на КогатоВсички връща сингъл задача това не е пълно до всеки задача в колекцията е завършена. В задачи изглежда се втурва успоредно , но не се създават допълнителни нишки. В задачи може да завърши в произволен ред.

Препоръчано: