Я читал несколько статей async
здесь: http://www.asp.net/web-forms/tutorials/aspnet-45/using-asynchronous-methods-in-aspnet-45, и автор говорит:
Когда вы выполняете асинхронную работу, вы не всегда используете поток. Например, когда вы делаете асинхронный запрос веб-службы, ASP.NET не будет использовать какие-либо потоки между вызовом метода async и ждать.
Так что я пытаюсь понять, как он становится async
, если мы не используем нити для параллельного выполнения? Что значит "вы не всегда используете поток".?
Позвольте мне сначала объяснить, что я знаю относительно работы с потоками (быстрый пример, конечно, темы могут использоваться в разных ситуациях, отличных от методологии UI и Worker)
- У вас есть поток пользовательского интерфейса для ввода ввода, вывода.
- Вы можете обрабатывать вещи в потоке пользовательского интерфейса, но это делает пользовательский интерфейс невосприимчивым.
- Итак, давайте скажем, что у нас есть операция, связанная с потоком, и нам нужно загрузить какие-то данные.
- И мы также разрешаем пользователям делать другие вещи во время их загрузки.
- Мы создаем новый рабочий поток, который загружает файл и изменяет индикатор выполнения.
- Как только это будет сделано, нечего делать, чтобы поток был убит.
- Мы продолжаем из потока пользовательского интерфейса.
Мы можем либо дождаться рабочего потока в потоке пользовательского интерфейса в зависимости от ситуации, но до этого, пока файл загружается, мы можем делать другие вещи с помощью потока пользовательского интерфейса, а затем ждать рабочего потока.
Не то же самое для программирования async
? Если нет, какая разница? Я читал, что для программирования async
используется ThreadPool
для переноса потоков.