Async-операция может продолжаться на разных потоках после разных await. Task описывает завершение работы, а не закрепляет её за одним потоком.
Таска в async/await всегда выполняется в одном потоке или может в разных?
Async-операция может продолжаться на разных потоках после разных await. Task описывает завершение работы, а не закрепляет её за одним потоком.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Async-операция может продолжаться на разных потоках после разных await. Task описывает завершение работы, а не закрепляет её за одним потоком.
Одна последовательная async-функция не начинает сама по себе исполнять две части тела одновременно: следующий участок продолжается после завершения ожидаемой операции. Но у него может быть другой thread ID.
UI SynchronizationContext способен возвращать продолжения в UI-поток; на сервере такой привязки обычно нет. Если задача уже завершена, await может не переключить поток вообще. Параллельность появляется при явном запуске нескольких операций, а не от каждого отдельного await.