Size: a a a

2020 September 12

MB

Mikail Bagishov in Rust Async
123 123
Т.е если я явно нигде в коде не взываю task::spawn и других вещей, то мой код будет все такой же синхронный, только при этом рализован в виде state machine? Ну и еще event-loop будет при этом?
Если spawn нет, то есть join, то выигрыш все еще будет. Если и join-подобных вещей нет то да, будет тот же синхронный код только в виде стейтмашины и с тем же порядком исполнения
источник

11

123 123 in Rust Async
Зачем тогда было называть async/.await async`ом и await`ом? Если по-сути они дальше стейт-машины дела не имеют, разве нету каких-то терминов которые бы подвязали эти слова именно к контексту state machine?
источник

АГ

Алексей Герасимов... in Rust Async
123 123
Зачем тогда было называть async/.await async`ом и await`ом? Если по-сути они дальше стейт-машины дела не имеют, разве нету каких-то терминов которые бы подвязали эти слова именно к контексту state machine?
а как их надо называть? почти во всех языках асинхронность через конечные автоматы сделана
источник

KR

Kai Ren in Rust Async
123 123
Зачем тогда было называть async/.await async`ом и await`ом? Если по-сути они дальше стейт-машины дела не имеют, разве нету каких-то терминов которые бы подвязали эти слова именно к контексту state machine?
Ты же не называешь автомобиль внутренним сгоранием или большим аккумулятором? Хотя по сути, дальше этих процессов они ничего не имеют.
Смысл в том, что абстракцию называют так, как собираются её применять и для чего, а не по техническим деталям её реализации.
источник

11

123 123 in Rust Async
Kai Ren
Ты же не называешь автомобиль внутренним сгоранием или большим аккумулятором? Хотя по сути, дальше этих процессов они ничего не имеют.
Смысл в том, что абстракцию называют так, как собираются её применять и для чего, а не по техническим деталям её реализации.
Имхо, не самое подходящее сравнение в данном случае. Автомобиль на то и автомобиль, что из-за как раз таки опущенных более мелких деталей и не является тем же самым, что и "большой аккумулятор" или "внутреннее сгорание". А вот роль сама по себе чисто async/.await`ов без необходимой среды выполнения - это больше про термины и понятия из теории конечных автоматов. Т.е вот аккумулятор сам по себе, без дополнительных вещей, которые его будут использовать - бесполезен. А async/.await уже полезен тем, что происходит преобразование в state machine
источник

MB

Mikail Bagishov in Rust Async
Ну Vec тоже не работает, пока нет аллокатора.
источник

KR

Kai Ren in Rust Async
123 123
Имхо, не самое подходящее сравнение в данном случае. Автомобиль на то и автомобиль, что из-за как раз таки опущенных более мелких деталей и не является тем же самым, что и "большой аккумулятор" или "внутреннее сгорание". А вот роль сама по себе чисто async/.await`ов без необходимой среды выполнения - это больше про термины и понятия из теории конечных автоматов. Т.е вот аккумулятор сам по себе, без дополнительных вещей, которые его будут использовать - бесполезен. А async/.await уже полезен тем, что происходит преобразование в state machine
Я пытаюсь сказать, что async/.await первичен, а не конечный автомат. Последний - просто здравый и разумный способ реализации первого. Но вся суть именно в первом.

Ну и если мы говорим конкретно по Rust, то конечные автоматы для асинк ИО у тебя и без async/.await возможны. Просто бери футуры и комбинируй.
Смысл же async/.await'ов именно в эргономике. Вообще, Толян всё расписал:
https://docs.rs/dtolnay/0.0.9/dtolnay/macro._01__await_a_minute.html
источник

11

123 123 in Rust Async
Mikail Bagishov
Ну Vec тоже не работает, пока нет аллокатора.
Так и Vec не то же самое и цели у него иные. Понятное дело сравнивать и машину с async/await тоже смысла большого не имеет :)
источник

11

123 123 in Rust Async
Kai Ren
Я пытаюсь сказать, что async/.await первичен, а не конечный автомат. Последний - просто здравый и разумный способ реализации первого. Но вся суть именно в первом.

Ну и если мы говорим конкретно по Rust, то конечные автоматы для асинк ИО у тебя и без async/.await возможны. Просто бери футуры и комбинируй.
Смысл же async/.await'ов именно в эргономике. Вообще, Толян всё расписал:
https://docs.rs/dtolnay/0.0.9/dtolnay/macro._01__await_a_minute.html
Спору нет, возможны. Возможно так же и иначе реализовать, по-своему, конечный результат преобразований async/.await`ов. Но факт есть факт - он именно такой, и не в каком-нибудь крейте, а в качестве встроенной фичи языка. Поэтому разумнее, имхо, было бы акцент делать на том, что его база - не средство его применения, а то, что он сам по себе, абстрагируясь от иных вещей, несет. А всё остальное уже как раз наносное
источник

MB

Mikail Bagishov in Rust Async
123 123
Спору нет, возможны. Возможно так же и иначе реализовать, по-своему, конечный результат преобразований async/.await`ов. Но факт есть факт - он именно такой, и не в каком-нибудь крейте, а в качестве встроенной фичи языка. Поэтому разумнее, имхо, было бы акцент делать на том, что его база - не средство его применения, а то, что он сам по себе, абстрагируясь от иных вещей, несет. А всё остальное уже как раз наносное
Если тебе нужен general-purpose конечный автомат, то для этого генераторы есть.
источник

К

Коля🤔🎭 in Rust Async
Всем привет. Я это самое, в асинхронщине 0. Что и где почитать про async?
источник

t

this is not mrklf in Rust Async
Коля🤔🎭
Всем привет. Я это самое, в асинхронщине 0. Что и где почитать про async?
источник

KB

Kirill Bulatov in Rust Async
Коля🤔🎭
Всем привет. Я это самое, в асинхронщине 0. Что и где почитать про async?
В инфо канала вот это:
https://github.com/polachok/tokio-futures-faq/blob/master/FAQ.ru.md

Тут официальная книга (похоже, вообще не обновляется никак)
https://rust-lang.github.io/async-book/

Один из главных рантаймов
https://tokio.rs/

Как всё примерно устроено внутри
https://cfsamson.github.io/books-futures-explained/introduction.html
источник
2020 September 13

11

123 123 in Rust Async
Kirill Bulatov
В инфо канала вот это:
https://github.com/polachok/tokio-futures-faq/blob/master/FAQ.ru.md

Тут официальная книга (похоже, вообще не обновляется никак)
https://rust-lang.github.io/async-book/

Один из главных рантаймов
https://tokio.rs/

Как всё примерно устроено внутри
https://cfsamson.github.io/books-futures-explained/introduction.html
По-сути последняя ссылка самая имбовая, странно что ее нету в закрепе канала :)
источник

KR

Kai Ren in Rust Async
Согласен. Чуть ли не единственный материал где внятно про Waker разжёвывается. А то обычно этот момент все забивают рассказать, а далеко не все сами вьезжают в то зачем там он вообще.
источник

11

123 123 in Rust Async
Kai Ren
Согласен. Чуть ли не единственный материал где внятно про Waker разжёвывается. А то обычно этот момент все забивают рассказать, а далеко не все сами вьезжают в то зачем там он вообще.
Именно, самое первое что бросается в глаза - это Waker. А объяснение на официальном сайте и вообще по многим из ссылок в гугле это что-то аля мантры, не рассказывающей в деталях
источник

ph

pl 🦑 hk in Rust Async
Для обычного использования детали и не нужны
источник

¯

¯\_(ツ)_/¯ in Rust Async
Kirill Bulatov
В инфо канала вот это:
https://github.com/polachok/tokio-futures-faq/blob/master/FAQ.ru.md

Тут официальная книга (похоже, вообще не обновляется никак)
https://rust-lang.github.io/async-book/

Один из главных рантаймов
https://tokio.rs/

Как всё примерно устроено внутри
https://cfsamson.github.io/books-futures-explained/introduction.html
фьюча == корутина?
источник

KB

Kirill Bulatov in Rust Async
¯\_(ツ)_/¯
фьюча == корутина?
Нет, корутина это про cooperative multitasking, а в Расте preemptive, если самое важное выделить.
источник

AV

A V in Rust Async
Kirill Bulatov
Нет, корутина это про cooperative multitasking, а в Расте preemptive, если самое важное выделить.
нет
источник