Boost logo

Boost Users :

Subject: Re: [Boost-users] condition_variable::timed_wait doesn't wait
From: tom fogal (tfogal_at_[hidden])
Date: 2009-03-09 14:42:01


Daniele Barzotti <daniele.barzotti_at_[hidden]> writes:
> Hi!
> I'm trying to use condition_variable::timed_wait without success.
> Using the following code, the timed_wait returns immediatly also if
> Receive() is never called.
[snip]
> Where I wrong?

I haven't used boost's locking mechanisms yet, but POSIX condvars
don't protect against spurious wakes. Thus,

[snip]
> //wait for an answer..
> bool ready = _cond.timed_wait(lock, xt, boost::lambda::var(_data_ready));

you probably want this in a loop,

    while(!_data_ready) {
        _cond.timed_wait(... _data_ready);
    }

HTH,

-tom


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net