|
Boost : |
From: Alexander Terekhov (terekhov_at_[hidden])
Date: 2001-08-13 14:54:57
> > > synchronized_queue<int> q;
>
> Actually the queue need not even be synchronized. :-)
really ? and how do you prevent concurrent push/empty/pop ??
well, synchronizing it inside queue object is really an
overkill (with respect to your example). it should be
done "on top" (using extra mutex/CVs) instead; IMHO what
you should synchronize here is not a *queue* (with lock/
unlock on every method call) but rather worker threads
doing some *more complex operations* such as
"if !q.empty() m = q.pop() else wait".
sure you could move the synch. logic inside push/pop
and do not use empty at all (waiting inside pop for
!_empty and inside push for !_full), but then please
show me the new versions of push/pop which would work
(using events) with multiple threads on push and pop
side..
regards,
alexander.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk