On Thu, Mar 19, 2009 at 12:13 AM, Steven Watanabe
<watanabesj@gmail.com> wrote:
AMDG
wait returns when the predicate is true, so the docs are correct.
In Christ,
Steven Watanabe
Did you test it? In my case wait returns when the predicate is false. I use an empty circular buffer and call from the same thread this code:
using namespace boost;
scoped_lock lock(mutex_);
wait_for_free_slots_.wait(lock, bind(&buffer_type::full, buffer_)); //wait_for_free_slots_ is a condition variable
buffer_.push_back(item);
wait_for_items_.notify_all();
This line returns immediately
wait_for_free_slots_.wait(lock, bind(&buffer_type::full, buffer_)); //wait_for_free_slots_ is a condition variable
If you inverse the predicate it blocks forever.
Thanks,
Ovanes