
Matt Hurd wrote:
On 01/12/06, Yuval Ronen <ronen_yuval@yahoo.com> wrote: <snip> If there aren't any, then why wouldn't the CV interface be changed to do the while loop itself:
template <typename Lock, typename Pred> void condition::wait(Lock &lock, Pred while_cond) { while (while_cond) { old_wait(lock); } }
or something similar.
Does that make sense?
Good sense. It is so:
#2 template<typename ScopedLock, typename Pred> void wait(ScopedLock& lock, Pred pred);
Requires: ScopedLock meets the ScopedLock requirements and the return from pred() is convertible to bool. Effects: As if: while (!pred()) wait(lock) Throws: lock_error if !lock.locked()
Oops, didn't notice that! Stupid me... While we're at that doc page, there's a mistake at the second timed_wait overload - it's documented to accept (ScopedLock& lock, Pred pred) while it actually accepts (ScopedLock& lock, const boost::xtime& xt, Pred pred) - the xtime parameter is missing.