Size: a a a

2020 July 01

YJ

Yo Jla in Rust Async
mAX
Даа.. работает, но нужно изучаить получше)
сейчас ссделаю минимальный пример работающий)
если не сложно, можно работающий потом в playground засунуть и здесь положить?
"утащю в норку".
источник

d

diabolo in Rust Async
mAX
когда дергаю cx.waker().wake_by_ref(), я так понимаю, запускаю текущий цикл обработки сообщений и он прощелкивает все poll снова
нет, он просто говорит поместить в пул эту футуру снова
источник

m

mAX in Rust Async
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=d911214fbf09c7ba2b11930be0e65e17

вот тут после того как забрали из потока значение poll_next() и оно не None, то дергаем cx.waker().wake_by_ref()
таким образом наша фьюча повторно дергается и мы забираем следующее значение.. когда придет None, а это будет через 10 значений фьюча повиснет т.к. wake_by_ref не вызывали, событий больше нет и в последний раз вернули Pending
источник

d

diabolo in Rust Async
mAX
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=d911214fbf09c7ba2b11930be0e65e17

вот тут после того как забрали из потока значение poll_next() и оно не None, то дергаем cx.waker().wake_by_ref()
таким образом наша фьюча повторно дергается и мы забираем следующее значение.. когда придет None, а это будет через 10 значений фьюча повиснет т.к. wake_by_ref не вызывали, событий больше нет и в последний раз вернули Pending
обязательно зависнет, у тебя нет завершения треда, можешь его завершить через join! или сделать корректное завершение внутри твоего spawn, лучше первое
источник

m

mAX in Rust Async
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=6722cbbbace9cca15228552d127f8446

Добавил еще одну пустую фьючу
она просто Pending возвращает и пишет в консоль что ее дергали
сцепил с первой читалкой rx через join!()
cx.waker().wake_by_ref() вызванный в читалке дергает и пустую тоже
источник

d

diabolo in Rust Async
то есть let h = spawn... join!(h)
источник

m

mAX in Rust Async
diabolo
обязательно зависнет, у тебя нет завершения треда, можешь его завершить через join! или сделать корректное завершение внутри твоего spawn, лучше первое
это понимаю, я специально описал почему так для себя..
источник

m

mAX in Rust Async
diabolo
нет, он просто говорит поместить в пул эту футуру снова
вот, получается wake_by_ref дергает все poll во всех фьючах по цепочке? а не одну конкретную ветку перевыполняет
источник

m

mAX in Rust Async
let server_task = Server::new(rx);
let server1_task = Server1{};
futures::join!(server_task, server1_task);

внутри server_task::poll дернули cx.waker().wake_by_ref() и poll выполнился у обоих server_task и server1_task
источник

d

diabolo in Rust Async
mAX
вот, получается wake_by_ref дергает все poll во всех фьючах по цепочке? а не одну конкретную ветку перевыполняет
у токио есть замечательная вещь — называется tracer — рекомендую поиграться
источник

m

mAX in Rust Async
Спасибо! Пойду изучать)
источник

d

diabolo in Rust Async
mAX
Спасибо! Пойду изучать)
и да, это комманда экзекутору пробежаться по фичам, если бы ты из Server1 вернул Ready, то он бы выполнился один раз. блин как тяжко с телефона (
источник

m

mAX in Rust Async
эх, к сожалению на playground нету extern crate tracing;
очень удобно всякие демки делать.. прикрутили бы уже cargo туда
источник

d

diabolo in Rust Async
mAX
эх, к сожалению на playground нету extern crate tracing;
очень удобно всякие демки делать.. прикрутили бы уже cargo туда
туда попадают только те крейты, которые в топе на crates.io сколько мне помнится
источник
2020 July 02

В

Виталий in Rust Async
Всем привет. Подскажите пожалуйста по actix как можно взаимодействовать любой функции рендеринга страницы с актором вебсокета? Пример на их сайте показывает актор вебсокета изолированым. Надо вытащить состояние сокета работает или не работает. А в вебсокет передавать изменнные данные
источник

SD

Sergey Duck in Rust Async
А зачем на Future нужен метод .boxed()? Зачем ее так пинить?
источник

d

diabolo in Rust Async
Sergey Duck
А зачем на Future нужен метод .boxed()? Зачем ее так пинить?
ну, он больше для склеивания нисклеиваемого, например со старыми футурами
источник

D

Denis in Rust Async
Sergey Duck
А зачем на Future нужен метод .boxed()? Зачем ее так пинить?
чтобы стирать тип, очевидно
источник

d

diabolo in Rust Async
Denis
чтобы стирать тип, очевидно
угу, когда нужно быстро накостылить особо не заморачиваясь)
источник

ph

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