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

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

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

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

Порівняння

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

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

Розклад

Including 10 minute breaks, this session should take about 3 hours and 20 minutes. It contains:

SegmentDuration
Основи асинхронізації30 minutes
Канали та потік управління20 minutes
Підводні камені55 minutes
Вправи1 hour and 10 minutes