Boost logo

Boost :

From: Bill Wade (bill.wade_at_[hidden])
Date: 2000-09-08 10:06:01

> From: William Kempf [mailto:sirwillard_at_[hidden]]

> > > Uhmmm... I'd have to see a concrete example. Other than a slight
> > > performance hit I can think of no reason why the locks must
> overlap
> > > this way.

Suppose I want to implement wait()? To paraphrase, the current windows
sample code has:

wait(Lock& lock)

Strictly speaking there is no overlap involved here. However, I believe
that you're suggesting that if I want to write wait() using the boost
interface I should use something like

wait(auto_ptr<Lock>& lock, Mutex& mutex)
  lock.reset(new Lock(mutex));

Not only does this version of the code have a "slight performance hit", but
the exception safety may also be compromised. It is plausible that the
first version always succeeds. Clearly the second version may fail because
of a failure to allocate memory. The second version might also change the
dynamic type of *lock (say from a LoggingLock to a plain old Lock).

Boost list run by bdawes at, gregod at, cpdaniel at, john at