Ласкаво просимо

"Async" — це модель одночасного виконання декількох завдань, при якій кожне завдання виконується одночасно доти, доки воно не заблокується, а потім перемикається на інше завдання, яке готове до виконання. Модель дозволяє виконувати більшу кількість завдань на обмеженій кількості потоків. Це пов'язано з тим, що накладні витрати на кожну задачу зазвичай дуже низькі, а операційні системи надають примітиви для ефективного визначення вводу/виводу, який може продовжувати роботу.

Асинхронна робота Rust базується на "ф'ючерсах", які представляють роботу, яка може бути завершена в майбутньому. Ф'ючерси "опитуються", доки вони не сигналізують, що вони завершені.

Ф’ючерси опитуються асинхронним середовищем виконання, і доступно кілька різних середовищ виконання.

Порівняння

  • Python має подібну модель у своєму asyncio. Однак його тип Future базується на зворотному виклику, а не опитується. Програми на асинхронному Python вимагають "циклу", подібного до середовища виконання в Rust.

  • Тип Promise JavaScript подібний, але знову ж таки на основі зворотного виклику. Середовище виконання мови реалізує цикл подій, тому багато деталей вирішення Promise приховані.

Розклад

Враховуючи 10-хвилинні перерви, ця сесія має тривати близько 3 годин та 20 хвилин. Вона містить:

СегментТривалість
Основи асинхронізації30 хвилин
Канали та потік управління20 хвилин
Підводні камені55 хвилин
Вправи1 година та 10 хвилин