TGViewer
C# 1001 notes C# 1001 notes @csharp_1001_notes · 6.64K subscribers
Post #855 2.95K
⏱️ Ускоряем async-код в C#: не просто await, а нормальная параллельность

Одна из частых ошибок в C# - писать независимые асинхронные операции так, будто они зависят друг от друга:


await GetUserAsync();
await GetOrdersAsync();
await GetRecommendationsAsync();


Выглядит нормально, но по факту это последовательное выполнение.

Если каждый запрос занимает примерно 1 секунду, весь блок будет выполняться около 3 секунд. Не потому что async медленный, а потому что мы сами заставили код ждать каждый шаг по очереди.

Правильнее запускать независимые операции сразу:


var userTask = GetUserAsync();
var ordersTask = GetOrdersAsync();
var recsTask = GetRecommendationsAsync();

await Task.WhenAll(userTask, ordersTask, recsTask);


Теперь все запросы стартуют одновременно, а общее время будет примерно равно самому долгому из них.

Но есть важный нюанс.

Task.WhenAll не делает CPU-код магически параллельным. Он особенно полезен для I/O-bound задач:

- запросы в базу
- HTTP-вызовы
- чтение файлов
- обращения к внешним API
- независимые операции с сетью

И ещё один момент: после WhenAll лучше доставать результаты уже из завершённых задач:


var user = await userTask;
var orders = await ordersTask;
var recs = await recsTask;

Так код остаётся читаемым, ошибки нормально пробрасываются, а логика не превращается в кашу.

Async/await сам по себе не ускоряет код. Он просто даёт возможность не блокировать поток. Ускорение появляется тогда, когда вы правильно запускаете независимые операции вместе, а не ждёте их по одной.
More from @csharp_1001_notes
  1. Sep 20, 2026🧩 C# Channels: сообщение попало в очередь. Почему обработчик его не получил? Два воркера…
  2. Sep 16, 2026Эта задача проверяет понимание Memory<T>, pooling, ownership, IAsyncEnumerable, cancellati…
  3. Sep 16, 2026# C# 14: хитрая задача на ArrayPool, IAsyncEnumerable и время жизни памяти Есть поток данн…
  4. Sep 14, 2026# C# 14: конкурентный кеш без race condition Реализуйте потокобезопасный кеш: public seale…
  5. Sep 14, 2026🔍Тестовое собеседование с Senior C# разработчиком уже завтра 15 сентября(уже завтра!) в 1…
  6. Sep 11, 2026🔧 Как передать многострочный PEM через Aspire в ASP.NET Core Сертификаты и ключи в PEM со…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →