Size: a a a

Rust — русскоговорящее сообществo

2020 October 17

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
эх :(
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Denis
т.е. если у района F: Fn(&Scope) -> .., то в токио — F: Fn(&Scope) -> Fut, Fut: Future
Погоди, а зачем F: -> Fut? Фьюча же должна быть в Scope::spawn
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
вафель 🧇
А в чём кстати глобальное отличие случая с токио и район? Почему для токио такую штуку нельзя написать?
Скоуп района блокируется, пока дети не завершились емнип. А в асинке блокировать нельзя.
источник

MS

Mikola Summer Duck in Rust — русскоговорящее сообществo
Denis
кстати, если не секрет, а что за фреймворк ты пилишь? планируешь публиковать?
Ну, если не получится решить эту проблему, то скорее всего не планирую, лол.

А так-то либка предоставляла бы функционал таск-систем для симуляций. У тебя есть много локальных экзекуторов, позволяющих очень быстро спавнить произвольные фьючеры без дёрганья GlobalAlloc.
Для каждого экзекутора ты собираешь ссылки на сторейджи с которыми хочешь работать конкретно в этом случае, затем делаешь executor.tick(storages). Это прогоняет все фьючеры до следующего .await, при этом фьючеры могут получить доступ к storages, но с лайфтаймом доступа не выходящим за пределы .await.
источник

MS

Mikola Summer Duck in Rust — русскоговорящее сообществo
Mikail Bagishov
Скоуп района блокируется, пока дети не завершились емнип. А в асинке блокировать нельзя.
В моём асинке можно было бы :(
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Mikail Bagishov
Скоуп района блокируется, пока дети не завершились емнип. А в асинке блокировать нельзя.
Так сама функция scope будет асинхронной
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
вафель 🧇
Так сама функция scope будет асинхронной
А если футуру scope дропают?
источник

MS

Mikola Summer Duck in Rust — русскоговорящее сообществo
Mikail Bagishov
А если футуру scope дропают?
process::abort() с ошибкой если её не авейтнули.
источник

D

Denis in Rust — русскоговорящее сообществo
вафель 🧇
Погоди, а зачем F: -> Fut? Фьюча же должна быть в Scope::spawn
а как ты скоуп передашь? хочется же спавнить футуры из футуры
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Утверждается, что деструктор должен либо ждать, либо отменять, либо паниковать.
А это все плохо
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Mikail Bagishov
Утверждается, что деструктор должен либо ждать, либо отменять, либо паниковать.
А это все плохо
Пусть отменяет, это не так страшно
источник

D

Denis in Rust — русскоговорящее сообществo
Mikola Summer Duck
Ну, если не получится решить эту проблему, то скорее всего не планирую, лол.

А так-то либка предоставляла бы функционал таск-систем для симуляций. У тебя есть много локальных экзекуторов, позволяющих очень быстро спавнить произвольные фьючеры без дёрганья GlobalAlloc.
Для каждого экзекутора ты собираешь ссылки на сторейджи с которыми хочешь работать конкретно в этом случае, затем делаешь executor.tick(storages). Это прогоняет все фьючеры до следующего .await, при этом фьючеры могут получить доступ к storages, но с лайфтаймом доступа не выходящим за пределы .await.
звучит как жесть, честно говоря))))
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Mikola Summer Duck
process::abort() с ошибкой если её не авейтнули.
Тогда у тебя все взорвется в первый же раз, когда футуру отменили
источник

MS

Mikola Summer Duck in Rust — русскоговорящее сообществo
Denis
звучит как жесть, честно говоря))))
Эмм, спасибо?
источник

D

Denis in Rust — русскоговорящее сообществo
Mikola Summer Duck
Эмм, спасибо?
xD
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Denis
а как ты скоуп передашь? хочется же спавнить футуры из футуры
scope(|scope| scope.spawn(async { ... })).await;

?
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
вафель 🧇
Пусть отменяет, это не так страшно
Ну, это наименее плохое поведение, но это все еще подводный камень
источник

D

Denis in Rust — русскоговорящее сообществo
вафель 🧇
scope(|scope| scope.spawn(async { ... })).await;

?
а внутри?
источник

MS

Mikola Summer Duck in Rust — русскоговорящее сообществo
На самом деле оно отлично бы работало если бы не затык с Any. А так будет отлично работать внутри моего двигла 😁
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Получается scoped таске будет очень тяжело высвобождать ресурсы
источник