Boost logo

Boost :

From: williamkempf_at_[hidden]
Date: 2001-10-12 12:25:04


--- In boost_at_y..., "George A. Heintzelman" <georgeh_at_a...> wrote:
> > --- In boost_at_y..., "George A. Heintzelman" <georgeh_at_a...> wrote:
> > Looking at your code it appears that you've misused the condition
> > type (though I may be wrong since I can't see all of your code).
> > Taking your description the whole process should be something
more
> > like this (poor implementation, but written this way for clarity
of
> > the concept):
> >
> > // in parent thread when it terminates...
> > {
> > boost::mutex::scoped_lock lock(child->mutex);
> > child->teminate = true;
> > }
> >
> > // in child thread...
> > {
> > boost::mutex::scoped_lock lock
> > boost::xtime xt;
> > xtime_get(&xt, boost::TIME_UTC);
> > xt.sec += transmission_delay;
> > while (!terminate) {
> > if (!cond.timed_wait(lock, xt))
> > break;
> > }
> > if (terminate)
> > // handle termination here
> > }
> > // other processing here
> >
>
> Well, this wouldn't quite be what I wanted to do, though I had
missed
> the point that timed_wait returns whether it timed out or not,
which
> does simplify things somewhat.
>
> In any case, the code you wrote illustrates my question better. The
> documentation of timed_wait says that the lock parameter must
fulfill
> the ScopedTimedLock model, which boost::mutex::scoped_lock doesn't
(I
> don't think). My question is, is this an error in the
documentation, or
> is it really needed for some reason I don't see? In other words,
would
> the code you wrote above work? If not, it might be worth adding a
note
> as to why boost::timed_mutex::scoped_timed_lock would be needed...

I'll have to look at this. It would be an error in documentation if
that is what it says, yes. Any scoped_lock variant will work here.

Bill Kempf


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