LINUX.ORG.RU

Как понять асинхонщину в Rust?

 , ,


0

5

В Rust какая-то очень «самобытная» асинхронщина, понять её сложно. Итак, необходимый минимум - реализовать трейт Future. Дольше веселее - есть несколько каких-то малопонятных сущностей, которые за что-то там отвечают, пока непонятно, за что.

Читал кучу мануалов, они из серии: https://sun1-16.userapi.com/impg/cTOihOqKWsJSPD6uBUB6KTQZY823V6f3TzS9Tw/5VAn_b_1JUI.jpg?size=1080x1080&quality=96&proxy=1&sign=3ec0c8687655c3ac555d4b06874cfc49&type=album

Как правильно достать значение из Future? 101 вопрос. Когда Future реализуется сам, а когда его необходимо реализовать самому? Я так понял, логика реализуется в poll(), нет?

Мне нужно, например, читать стдаут порождённого процесса или поток миди-данных в рандомное время на вводе.

Кто распишет вменяемый хеллоуворлд, скину на пиво;)

★★★★★
Ответ на: комментарий от anonymous

Реакция на появление новых данных должна быть в рил-тайм. Нет возможности проверять их в начале длинного цикла обработки ВСЕГО.

meliafaro ★★★★★
() автор топика
Ответ на: комментарий от meliafaro

Без кода или его описания, нельзя сказать есть возможность или нет.

В любом случае, пул потоков это распространенная практика. Ты для начала посмотри во что выливается overhead на thread и на async рутину. Не говоря уже о том что рутины будут заведомо хуже по скорости чем потоки. А потом посмотри как снизу реализованы эти рутины, станет понятно, что они в общем-то не нужны.

anonymous
()
Ответ на: комментарий от meliafaro

рилтайм и асинк - разные полюса. Рилтайм это когда быстрый пинг, асинк - это когда большой поток запросов. Смысл асинка - редко переключать контекст. Хотя цикл обработки всего не такой уж длинный, он спит на еполе и просыпается только когда ядро уже прочитало данные с какого-то сокета.

не на примере сокетов

Ну файловые дескрипторы можно мешать с сокетами в одном еполе. Правда насколько я смотрел, асинк это обычно про сокеты, а не файлы. Вряд ли ты станешь читать сразу тысячу файлов, а на несколько вполне можно выделить потоки.

q0tw4 ★★★★
()
Последнее исправление: q0tw4 (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.