Size: a a a

2021 August 20

KK

Kirill (Cykooz) Kuzm... in Rust Async
По моему это мало зависит от раста - это же треды операционки. Их нельзя взять и снаружи переключить просто так на другой код внутри них.
источник

АП

Артем Пятницкий... in Rust Async
А там под капотом какой-нибудь fut.poll(…) ручной на треде?
источник

KK

Kirill (Cykooz) Kuzm... in Rust Async
Ну как выше и написали - надо самому руками растыкивать "точки прерываний". Ни раст, ни токио их сам не сможет натыкать. Разе что сделать процедурный макрос, который будет через каждую строчку втыкать такие прерывания.
источник

АП

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

KK

Kirill (Cykooz) Kuzm... in Rust Async
Ну так за счёт точек прерывания в виде await-ов или вызвов каких-то функций, которые могут передать управление рантайму токио.
источник

АП

Артем Пятницкий... in Rust Async
Ясно. Спасибо
источник

ph

pl 🦑 hk in Rust Async
По сути да
источник

MB

Mikail Bagishov in Rust Async
Вообще, туда еще кооперативное вытеснение завезли, но оно не по таймеру.
источник

П

Пух in Rust Async
а как оно работает?
источник

MB

Mikail Bagishov in Rust Async
Нет, их сокеты работают только под их собственным рантаймом.

Разница лишь в том, что async-io неявно спавнит себе глобальный рантайм.
источник

MB

Mikail Bagishov in Rust Async
Если таска за один полл уже сделала много работы, то встроенные ресурсы (типа сокетов) принудительно начинают возвращать Pending, чтобы таска приостановилась.
источник

П

Пух in Rust Async
А ну это всё еще на .await'ах
источник

DF

Dollar Føølish in Rust Async
принудительное вытеснение сделано было кажется через самопосылание сигнала
источник

DF

Dollar Føølish in Rust Async
в гошке
источник

DF

Dollar Føølish in Rust Async
единственный момент я не знаю выходят они в итоге из хендлера или нет. Если не выходили бы - колстек неограничено рос бы
источник

DF

Dollar Føølish in Rust Async
а, ну да типа таск переключил и вышел из хэнлдера , логично
источник

MB

Mikail Bagishov in Rust Async
Да, конечно. Не думаю, что на уровне токио можно как-то по-другому.
источник

MB

Mikail Bagishov in Rust Async
А как это с мьютексами дружит?
источник

DF

Dollar Føølish in Rust Async
наверное как-то проверяется участок кода текущий на "безопсаность" переключения
источник

MB

Mikail Bagishov in Rust Async
Ну, такое решение для токио точно не подойдет.
источник