Отдельный Task и отдельный поток — разные вещи. Async-метод может вернуть задачу без запуска нового потока; Task.Run явно планирует делегат в пуле, но не нужен для каждого async-вызова.
В каком случае второй async-метод выполнится в отдельной Task?
Отдельный Task и отдельный поток — разные вещи. Async-метод может вернуть задачу без запуска нового потока; Task.Run явно планирует делегат в пуле, но не нужен для каждого async-вызова.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Отдельный Task и отдельный поток — разные вещи. Async-метод может вернуть задачу без запуска нового потока; Task.Run явно планирует делегат в пуле, но не нужен для каждого async-вызова.
Если сначала вызвать два метода, сохранить их Task, а затем ждать WhenAll, их асинхронные операции могут выполняться конкурентно. При последовательных await второй вызов начинается только после завершения первого.
Async-метод начинает синхронную часть в вызывающем потоке до приостановки. Конкретного «второго метода» в условии нет, поэтому нельзя определить его поведение без кода и API; особенно важно отличать I/O от CPU-bound работы.