Ласкаво просимо
"Async" — це модель одночасного виконання декількох завдань, при якій кожне завдання виконується одночасно доти, доки воно не заблокується, а потім перемикається на інше завдання, яке готове до виконання. Модель дозволяє виконувати більшу кількість завдань на обмеженій кількості потоків. Це пов'язано з тим, що накладні витрати на кожну задачу зазвичай дуже низькі, а операційні системи надають примітиви для ефективного визначення вводу/виводу, який може продовжувати роботу.
Асинхронна робота Rust базується на "ф'ючерсах", які представляють роботу, яка може бути завершена в майбутньому. Ф'ючерси "опитуються", доки вони не сигналізують, що вони завершені.
Ф’ючерси опитуються асинхронним середовищем виконання, і доступно кілька різних середовищ виконання.
Порівняння
-
Python має подібну модель у своєму
asyncio
. Однак його типFuture
базується на зворотному виклику, а не опитується. Програми на асинхронному Python вимагають "циклу", подібного до середовища виконання в Rust. -
Тип
Promise
JavaScript подібний, але знову ж таки на основі зворотного виклику. Середовище виконання мови реалізує цикл подій, тому багато деталей вирішенняPromise
приховані.
Розклад
Враховуючи 10-хвилинні перерви, ця сесія має тривати близько 3 годин та 20 хвилин. Вона містить:
Сегмент | Тривалість |
---|---|
Основи асинхронізації | 30 хвилин |
Канали та потік управління | 20 хвилин |
Підводні камені | 55 хвилин |
Вправи | 1 година та 10 хвилин |