Асинхронный Rust:Stackfull Coroutines vs. Future. Артём Павлов
Вставка
- Опубліковано 17 вер 2024
- 1 декабря, в Москве ждем вас на конференцию RustCon 2023.
Асинхронный Rust:Stackfull Coroutines vs. Future. Артём Павлов, Квантон
В докладе рассматривается альтернативный подход к асинхронному программированию на Rust'е в контексте проблем и недостатков существующей async/await системы.
Доклад рассчитан на людей, заинтересованных в фундаментальных аспектах асинхронного программирования, а также недовольных существующей async/await системой.
Слушатели познакомятся с альтернативным подходом к асинхронному программированию, потенциально пригодному к использованию на практике, и смогут улучшить свои познания о фундаментальных аспектах асинхронного программирования.
спасибо, ценное мнение, - хорошее объяснение темы.
А можно ли использовать какую от заглушку на микрофоне? а то отдышка через каждое слово, как на марафоне бега какого-то, уже уши режет, дальше одном минуты невозможно смотреть
Да что вы лезите со своими стековыми корутинами? Если не понимаете и не можете работать без стековыми корутинами, то пользуйтесь системными потоками будет практический тоже само что и стековые корутины.
UB фанат?
@@proletarian Можно запретить передачу по ссылке аргументов в без стековую корутину. Не знал?
@@kapitonovmax честно без понятия, просто триггерит когда под видео о языке который позиционирует себя как альтернатива си пишут комменты в быдловатом стиле, и это всегда С/С++ разрабы, вас как будто заставляют использовать раст, зиг и прочее всякое
Аллилуйя!!
Как же задолбала имеющаяся кривая асинхронщина 😡
два года прошло, а проекта не видно
async/await, мне кажется, это некий рудимент оставшийся от эксперементов реализации асинхронного программирования. Я сейчас не понимаю, как с нуля можно было придумать такой неудобный механизм как async/await, его появление объясняется исключительно фразой "так исторически сложилось"
а какие альтернативы?
Какой рудимент? async/await это последняя ступень эволюции. Просто в Rust не смогли осилить реализацию с нуля.
*Сравнение эволюции Async/Await в разных языках*
1. *JavaScript*
- Путь: Callbacks → Promises → Generators → Async/Await.
2. *C#*
- Путь: Callbacks и Event-based Programming → APM → TAP → Async/Await.
3. *Python*
- Путь: Callbacks → Generators и asyncio → Async/Await.
4. *Kotlin*
- Путь: Callbacks → Future/CompletableFuture → Coroutines → Async/Await
*Сложности с async/await в Rust*
В основном, они связаны с системой заимствования и времени жизни (lifetimes), которая требует тщательного управления временем жизни объектов для обеспечения безопасности памяти. Это усложняет написание асинхронного кода. Кроме того, высокая производительность Rust требует явного управления ресурсами, поэтому асинхронные функции возвращают сложные `Future`, которые необходимо явно запускать и управлять ими. Ещё одной причиной является отсутствие стандартного экзекьютора для асинхронных задач, что приводит к разнообразию подходов и путанице между различными решениями, такими как `tokio` и `async-std`.