Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Добро пожаловать

«Async» — модель конкурентности, в которой несколько задач выполняются одновременно: каждая задача выполняется до тех пор, пока не заблокируется, затем управление переходит к другой задаче, которая готова продолжить работу. Модель позволяет запускать большое количество задач на ограниченном числе потоков. Это происходит потому, что накладные расходы на задачу обычно очень малы, а операционные системы предоставляют примитивы для эффективного определения того, какой ввод-вывод может продолжаться.

Асинхронная работа в Rust основана на «фьючерсах» (futures), которые представляют работу, которая может быть завершена в будущем. Фьючерсы «опрашиваются» (polled), пока не сообщат, что завершены.

Фьючерсы опрашивает асинхронный рантайм, и доступно несколько разных рантаймов.

Сравнения

  • В Python похожая модель в asyncio. Однако его тип Future основан на колбэках и не опрашивается. Асинхронным программам на Python нужен «цикл» (loop), похожий на рантайм в Rust.

  • Promise в JavaScript похож, но опять же основан на колбэках. Среда выполнения языка реализует цикл событий, поэтому большинство деталей разрешения Promise скрыты.

Расписание

Включая 10-минутные перерывы, это занятие займёт около 3 часов 30 минут. Оно включает:

СегментДлительность
Основы асинхронности40 минут
Каналы и поток управления20 минут
Подводные камни55 минут
Упражнения1 час 10 минут