Является ли параллельный ForEach асинхронным?
Является ли параллельный ForEach асинхронным?

Видео: Является ли параллельный ForEach асинхронным?

Видео: Является ли параллельный ForEach асинхронным?
Видео: Видео курс C# Professional. Урок 14. TPL. Параллельное программирование 2024, Декабрь
Anonim

Вся идея, лежащая в основе Параллельный . Для каждого () заключается в том, что у вас есть набор потоков, и каждый поток обрабатывает часть коллекции. Как вы заметили, это не работает с асинхронный - ожидание, где вы хотите освободить поток на время асинхронный вызов. Для каждого (), который поддерживает асинхронный Задача хорошо.

Что касается этого, как вы дождетесь завершения параллельного foreach?

Ничего особенного делать не надо, Параллельный . Для каждого () буду ждать пока все его разветвленные задачи не будут полный . Из вызывающего потока вы можете рассматривать его как один синхронный оператор и, например, заключить его в команду try / catch. Вам это не нужно с Параллельный.

Аналогично, является ли foreach асинхронным? Нет асинхронный . Это блокировка. Те, кто впервые изучил такой язык, как Java, C или Python, до того, как попробуют JS, запутаются, когда попытаются поместить произвольную задержку или вызов API в тело своего цикла.

Кроме того, как продолжить параллельный цикл foreach?

Когда вы преобразовали свой цикл в совместимое определение для Параллельный . Для каждого логика, вы в конечном итоге сделали тело оператора лямбдой. Это действие, вызываемое Параллельный функция. Итак, заменим Продолжить с return и break с операторами Stop () или Break ().

Является ли задача WhenAll параллельной?

Применение WhenAll возвращает сингл задача это не будет полным до тех пор, пока каждый задача в коллекции завершено. В задания кажется, что вбегает параллельный , но никаких дополнительных потоков не создается. В задания можно выполнить в любом порядке.

Рекомендуемые: