|
Boost Users : |
From: Peter Dimov (pdimov_at_[hidden])
Date: 2008-08-11 15:57:23
I wrote:
> Zeljko Vrba:
>
>> Even worse:
>>
>> A: push; unlock; gets preempted
>> B: wait_and_pop: succeeds, making the queue empty; unlocks the mutex
>> A: gets scheduled again, notifies the condvar which has no waiters
>> C: wait_and_pop: acquires mutex, sleeps on the condvar
>
> No. C doesn't sleep because the wait is guarded by the predicate
> the_queue.empty().
Oops. The queue is empty. So C does sleep, awaiting a push. Why is this a
problem?
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