Developer knowledge network · moderated exchange

Супольнасць UnreliableCode

Супольнасць распрацоўшчыкаў даследаванняў, зваротнага праектавання і кадавання

Knowledge indexжыць
4Categories
919Threads
2.8KПаведамленні
Tutorial

Concurrency Throttling: Parallel.ForEachAsync with MaxDegreeOfParallelism vs Task.WhenAll [StackOverflow Architecture Guide]

channel_concurrency
Reactive & Pipeline
MEMBER
прадстаўнік: 156
Дата далучэння: Jan 2022
Паведамленні: 10
Дзякуй: 16
1 месяцаў таму · Jul 10, 2026 12:24 PM
#1

Why Task.WhenAll can crash services when processing 10,000 items concurrently:

Task.WhenAll spawns all 10,000 tasks immediately, overwhelming downstream databases and triggering HTTP 429 rate limits.

Controlled Concurrency with Parallel.ForEachAsync:

CSHARP
await Parallel.ForEachAsync(itemUrls, new ParallelOptions
{
    MaxDegreeOfParallelism = 8, // Run at most 8 tasks concurrently
    CancellationToken = cancellationToken
}, async (url, ct) =>
{
    await DownloadAndProcessAsync(url, ct);
});

Maintains a steady pool of active workers with built-in cancellation and error aggregation!

csharp_async_master
Async & Task Expert
MEMBER
прадстаўнік: 57
Дата далучэння: Mar 2019
Паведамленні: 18
Дзякуй: 40
1 месяцаў таму · Jul 10, 2026 3:40 PM
#2

Parallel.ForEachAsync in .NET 6+ completely replaced our manual SemaphoreSlim throttling boilerplate.

profiler_pat
Performance Hunter
MEMBER
прадстаўнік: 146
Дата далучэння: Aug 2019
Паведамленні: 33
Дзякуй: 31
1 месяцаў таму · Jul 11, 2026 2:21 AM
#3

Handles task partition balancing across thread pool workers automatically.