Маjко
А можно имплементацию на play.rust-lang?
Лень, что-то похожее будет: impl Future for MyMpscRecv<T> { type Item = T; type Error = MpscError; fn poll(&self) -> Result<Async<Self::Item>> { match self.inner.try_recv() { Ok(value) => Ok(Async::Ready(value)), Err(MpscError::NotReady) => Ok(Async::NotReady), Err(e) => Err(e) } } } Типы ошибок итд точные не помню, но концепция там именно такая.
Vladimir
пол происходит в вейте, о чем ты вообщеЮ
Маjко
А лучше вообще сразу Stream запилить
Маjко
Красота. Оно не работает.
Эм, ну ясен хер) Типы левые, мб с дженерик баундами косяк
Cuno
Эм, ну ясен хер) Типы левые, мб с дженерик баундами косяк
Проблема не в типах. Оно заснёт и никогда не проснется. Нотификейшн для таска где?
Cuno
или там каналы из std уже о tokio знают?
Маjко
С хера ли оно заснет?
Маjко
try_recv не блокируется
Маjко
Алло
Cuno
Заснёт = вернет NotReady первый раз
Cuno
и больше никогда не вызовется
Маjко
С чего вдруг?
Cuno
А с чего вдруг оно вызовется?
Маjко
В того что его будет поллить tokio до получения Ready
Маjко
Так как бы фьючи и работают
Маjко
Поправь если я не прав, конечно
Cuno
Замечательно, а с какой частотой оно должно его поллить?
Cuno
И когда?
Alexander
так вот с каналами, tokio пулит события не системные?
Маjко
Маjко
Это будет работать
Маjко
Точная частота — обращайтесь к коду токио
Cuno
Ты знаешь как токио работает вообще?
Не могу ответить "да", но определенное представление имею.
Alexander
грубо говоря что-то вроде epoll(0, список_fd); и после этого прогоняет ready по всем не системным штукам?
Vladimir
Ты знаешь как токио работает вообще?
оно не будет полить его, если отправлен нот реди
Маjко
Не могу ответить "да", но определенное представление имею.
Я писал такую штуку когда реализовывал свой таймер. NotReady если дельта меньше таймаута, Ready если больше. Это работает.
Маjко
оно не будет полить его, если отправлен нот реди
Ща код подниму, мб с NotReady и накосячил
Vladimir
там кроме нот реди должен еще метод дергаться, типа current().notify()
Vladimir
чтоб за следующий тик тоже дернуло пул
Alexander
доктор меня все игнорируют
Cuno
доктор меня все игнорируют
Я как раз тот же вопрос пытаюсь выяснить
Alexander
ага
Alexander
кстати это я так понимаю в mio все:
Alexander
?
Alexander
реализация
Alexander
вот я так понял, что оно или поллит все по очереди, что неразумно для IO
Маjко
Это работало)
Alexander
или делает epoll с нулевым таймаутом на все связанное с FD, там вроде был трейт специально обученный, а потом поллит то что осталось
Alexander
IO на mio
а свои вещи типа каналов или таймаутов уже выше?
Alexander
в смысле библиотека уровнем выше, или тоже через mio
Alexander
я когда смотрел исходники токио мне казалось все туда уходит
Маjко
Как реализован tokio-timer не смотрел, мб тоже на mio.
Alexander
мне казалось что в реактор приходят типы реализующие трейты из mio только
Vladimir
@d34d10cc https://play.rust-lang.org/?gist=05a03c637a3e99e80158e8cd89e76d30&version=stable почему это работает?
Vladimir
точнее так, почему это не должно работать
Маjко
Потому что блокирует поток
Маjко
Плохо
Vladimir
так и должно быть
Vladimir
тут дедлока нет
Vladimir
лок и дедлок это разные вещи
Vladimir
на системный поток пофиг, он всеголишь продюсер событий
Anton
Экземплд
Anton
Посибо
Anton
Схоронил
Vladimir
та не за что
Anton
Ну мне это сильно помогло
Anton
Маjко
Это работало)
Окей, это не работает. Был не прав, нужен хэндлер с нотифаями. Осталось выяснить какого хрена это работало тогда
Vladimir
может все тесты получали днс
Маjко
Да нет, там таймер был, больше 500/сек не отдавал.
Маjко
Ладн, один хер там уже всё не так и контроль количесва запросов в секунду реализован иначе
Маjко
Спасибо за критику, буду знать :)
Kerrigan
https://twitter.com/omckws/status/935403818472353792
между прочем это нормальное имя
Denis
разумеется, язык то в честь человека с этим именем назван
Denis
но судя по эмблеме на кофте сына, дело в не этом
Alex
нормальное еврейское имя!
A64m
лучше бы по фамилии назвали
Kerrigan
по фамилии другой язык назван
Alex
хаскель кури!
A64m
тогда не был еще
A64m
когда для хаскеля название выбирали
Kerrigan
уже поздно
Denis
карри звучит куда вкуснее
Alex
கறி
A64m
ну, хоть не самое плохое выбрали, но плохо что не Карри, конечно
Denis
ну хоть не java curry