You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I think it could be useful for the Clock::delay() method to have a non-blocking interface like: fn delay<Dur>(dur: Dur) -> nb::Result<(), ()>.
This would return Err(nb::Error::WouldBlock) as long as the delay is ongoing and Ok(()) once finished.
This would give the user more control on polling and what to do while waiting and is the usual interface for other blocking methods (see here for example).
However, I am unsure if it would be possible to implement this in the provided Clock::delay() method implementation since the start would need to be kept constant until completion.
The text was updated successfully, but these errors were encountered:
Thank you for the issue. I am currently working on the next minor-version release which should include a Timer type. Feel free to take a look at the PR #21 and let me know what you think. It does allow for starting a timer, then either blocking until it expires (wait()) or polling. It also allows reading both elapsed and remaining time (in real-world duration units, of course). In fact, that PR will remove Clock::delay() to use the Timer functionality instead.
I'm going to look into this as I have virtually no experience with nb. I'm hesitant to adopt semantics like this due to the uncertainty and deadlock I perceive in the embedded WG. If anything, I may add this alongside the current wait() interface.
I think it could be useful for the
Clock::delay()
method to have a non-blocking interface like:fn delay<Dur>(dur: Dur) -> nb::Result<(), ()>
.This would return
Err(nb::Error::WouldBlock)
as long as the delay is ongoing andOk(())
once finished.This would give the user more control on polling and what to do while waiting and is the usual interface for other blocking methods (see here for example).
However, I am unsure if it would be possible to implement this in the provided
Clock::delay()
method implementation since the start would need to be kept constant until completion.The text was updated successfully, but these errors were encountered: