Ласкаво просимо
"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:
Segment | Duration |
---|---|
Основи асинхронізації | 30 minutes |
Канали та потік управління | 20 minutes |
Підводні камені | 55 minutes |
Вправи | 1 hour and 10 minutes |