From: Schrader, Glenn (gschrad_at_[hidden])
Date: 2008-02-08 08:18:22
The boost::interprocess library has a semaphore that should work even though its probably overkill.
> -----Original Message-----
> From: boost-bounces_at_[hidden] [mailto:boost-bounces_at_[hidden]]
> On Behalf Of Colin Caughie
> Sent: Friday, February 08, 2008 3:00 AM
> To: boost_at_[hidden]
> Subject: Re: [boost] This deadlocks on Linux but not on Windows <----- why
> this is important
> Clark Sims <clark_sims_boost <at> yahoo.com> writes:
> > I defined this class for managing a thread group, with different
> for different threads
> > http://rafb.net/p/u0LDDP45.html I wrote this test example:
> http://rafb.net/p/bAIhrh79.html it
> > works perfectly in linux, generating this output :
> > http://acumenconsultinginc.net/linux.results.txt on windows, it calls
> appropriate locks, but
> > it does not stop when two locks, lock the same mutex:
> > My class for managing threads, based upon priorities, won't work unless
> previous small code fragment deadlocks.
> Those URLs don't work for me, but presumably what you want is something
> blocks until something is queued to be run by one of the threads in the
> My suggestion would be to use semaphores rather than mutexes for this. You
> initialize the semaphore count to 0 so that the first time you wait for it
> immediately block. When another thread signals the semaphore you wake up.
> You'll have to write your own cross-platform semaphore class though as
> Boost.Thread doesn't have one.
> Unsubscribe & other changes:
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk