Boost logo

Boost :

From: Vladimir Prus (ghost_at_[hidden])
Date: 2005-03-30 06:44:42


Hello,
the docs for condition::wait say:

              blocks the current thread of execution
              until readied by a call to <code>this->notify_one()</code>
              or<code> this->notify_all()</code>, and then reacquires the
              lock.

Shouldn't the docs also mention 'spurious wakeups', that is returns from wait
without any notify_one or notify_all coll? I won't pretend to know why those
wakeups can happen and on what systems, but at least is relevant to pthreads
conditions.

I'm asking because a colleague just read this, and though that a parent thread
can launch child thread and wait for it to become ready with just

   condition.wait();

on parents side and

   condition.notify_one();

on child's side, while in fact return from condition.wait() only means that
the predicate waited on must be reevaluated.

- Volodya


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk