Представьте, что у меня есть IAsyncEnumerable, где каждый Request представляет собой какое-то входящее сообщение, которое я хочу обработать, но я не хочу ждать завершения каждого обработчика сообщений перед перемещением. переход к следующей итерации/сообщению; Я хочу, чтобы как можно больше сообщений обрабатывалось «одновременно».
Могу ли я использовать простую перегрузку метода Parallel.ForEachAsync (без указания максимального количества потоков, чтобы делегировать обработку всего этого самому фреймворку)?
По сути, я этого не хочу:
await foreach (var request in requests) // `requests` is an `IAsyncEnumerable`
{
await Handle(request); // I don't want to await here
}
Могло бы вместо этого сделать это? Или это проблематично (например, может исчерпать пул потоков)? Или есть какой-то лучший подход?
await Parallel.ForEachAsync(requests, async (request, ct) =>
{
await Handle(request);
});
Подробнее здесь: https://stackoverflow.com/questions/791 ... oreachasyn