Is it reasonable to expect Condvar::wait_timeout_while
to call condition
callback at least once? Implementation at the time of this writing suggests that it is. Maybe it would be sensible to specify this behaviour?
The documentation specifies that
The returned
WaitTimeoutResult
value indicates if the timeout is known to have elapsed without the condition being met.
Which I’d understand to mean that the conditon has to be checked at the point of timing out, as otherwise it couldn’t correctly indicate whether “the timeout is known to have elapsed without the condition being met”.
Nonetheless, I see potential for documentation improvement. In particular the documentation of WaitTimeoutResult
itself doesn’t clarify that the fn timed_out(&self) -> bool
(uhh… a &self
method on a Copy
type, who wrote that… [1]) method indicates not simply timeout, but timeout without the condition being met. Ah wait… it’s the same type for
Condvar::wait_timeout_while
and for Condvar::wait_timeout
, though the result type only claims the latter
It is returned by the
wait_timeout
method.
Even more documentation improvements… though then, for wait_timeout
, the documentation of WaitTimeoutResult::timed_out
is accurate.
methods on such types (small
Copy
types) are typicallyfn (self)
, notfn(&self)
↩︎
I should clarify one detail. The case I have in mind is then the timeout
is 0. I would like a guarantee that the wait_timeout_while
will check the condition once, even if the timeout
is 0. It seems to be the case right now. Do we want to clarify that it will still check the condition to prevent a possible implementation that will return immediately if the given timeout is 0?
The C++ standard seems to guarantee that, however, somewhat implicitly, by providing a "reference" code to which behaviour an implementation should adhere (as I understand it).
This topic was automatically closed 90 days after the last reply. We invite you to open a new topic if you have further questions or comments.