пула?
Сам процесс кипячения - это IO. Чтение/запись на диск, в сеть и т.д.
Асинхронность, она исключительно про пул потоков. Она решает задачи переиспользования и утилизации этих потоков. Вот у тебя таск, скажем, поход в базу. Где-то по-середине там работа с сетью: отправить запрос, дождаться результата, вот это вот всё. Ждать ведь не выгодно: целый поток висит и ничего не делает, ждёт, пока его операционная система разбудит. А он мог бы что-то полезное сделать, другой запрос подготовить, например. Реализовано это через кучку состояний у таска: от старта через каждый await и до самого завершения. На await'ах не только стартует новый таск, но и переключается состояние у вызывающего таска. И поток, исполняющий вызывающий таск, освобождается: сохраняется состояние текущего таска, на исполнение выбирается следующий. Возможно даже тот таск, который мы создали в предыдущем, не важно.
Обсуждают сегодня