Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CondVar wait functions accepting a closure #47960

Open
vlovich opened this Issue Feb 2, 2018 · 4 comments

Comments

Projects
None yet
7 participants
@vlovich
Copy link

vlovich commented Feb 2, 2018

Pretty common for conditional variable classes to provide wait variants that accept a closure that returns a boolean indicating whether or not the condition has been satisfied. This would be a pretty nice ergonomic improvement to using CondVar. Something like cvar.wait_until(lock, || { some condition }). Even more useful would be a wait_timeout_until which would avoid the need to keep track of elapsed time if the condition variable might get notified several times before the condition is met.

@steveklabnik

This comment has been minimized.

Copy link
Member

steveklabnik commented Feb 2, 2018

Generally, for small features, we just take PRs, and for big ones, issues. I'm not sure if @rust-lang/libs considers this a small or large feature.

@aturon

This comment has been minimized.

Copy link
Member

aturon commented Feb 2, 2018

This seems small enough for a direct PR, yes.

@vlovich

This comment has been minimized.

Copy link
Author

vlovich commented Feb 2, 2018

Will prepare it. Still a little new to rust. Would the callback be Fn or FnMut?

@sfackler

This comment has been minimized.

Copy link
Member

sfackler commented Feb 2, 2018

FnMut - closures should generally be as flexible as possible.

Manishearth added a commit to Manishearth/rust that referenced this issue Feb 25, 2018

Rollup merge of rust-lang#47970 - vlovich:condvar_wait_until, r=dtolnay
Add Condvar APIs not susceptible to spurious wake

Provide wait_until and wait_timeout_until helper wrappers that aren't susceptible to spurious wake.
Additionally wait_timeout_until makes it possible to more easily write code that waits for a fixed amount of time in face of spurious wakes since otherwise each user would have to do math on adjusting the duration.

Implements rust-lang#47960.

Manishearth added a commit to Manishearth/rust that referenced this issue Feb 25, 2018

Rollup merge of rust-lang#47970 - vlovich:condvar_wait_until, r=dtolnay
Add Condvar APIs not susceptible to spurious wake

Provide wait_until and wait_timeout_until helper wrappers that aren't susceptible to spurious wake.
Additionally wait_timeout_until makes it possible to more easily write code that waits for a fixed amount of time in face of spurious wakes since otherwise each user would have to do math on adjusting the duration.

Implements rust-lang#47960.

kennytm added a commit to kennytm/rust that referenced this issue Feb 25, 2018

Rollup merge of rust-lang#47970 - vlovich:condvar_wait_until, r=dtolnay
Add Condvar APIs not susceptible to spurious wake

Provide wait_until and wait_timeout_until helper wrappers that aren't susceptible to spurious wake.
Additionally wait_timeout_until makes it possible to more easily write code that waits for a fixed amount of time in face of spurious wakes since otherwise each user would have to do math on adjusting the duration.

Implements rust-lang#47960.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.