Re:Writing an OS in Rust: Async/Await
by steveklabnik on Monday March 30, 2020 @01:57PM
(#22730403)
The only yield points are .await points. If there's an .await in a loop, then sure, but otherwise no.
[ Parent
| on HN ]
What is the cost of an .await point?
For this to work, perhaps Rust should cooperate too, inserting .await points at strategic places in the code, to keep cost low but still guaranteeing a certain responsiveness of the overall system.
Re:Writing an OS in Rust: Async/Await
by jfkebwjsbx on Monday March 30, 2020 @09:08PM
(#22734011)
That would explode the state machine size and make its performance characterization very hard.
And you would need to avoid having any kind of call to external code (or yield before and after every such call, and pray for the best).
Re:Writing an OS in Rust: Async/Await
by mwcampbell on Tuesday March 31, 2020 @08:55AM
(#22737013)
If I understand the futures::pending!() macro correctly, one can use that to add a forced yield point in a loop, right?
Re:Writing an OS in Rust: Async/Await
by steveklabnik on Tuesday March 31, 2020 @10:20AM
(#22737738)
Yes, it creates a future, and then immediately .awaits it.