The original code for the wait_and_pop method was
Display All
When the boost condition variable waits, it takes the lock object as a parameter so that it can unlock the mutex until the condition variable is notified.
The code in GCC4 however is:
Display All
I'm not extremely familiar with windows-specific threading, but it doesn't look like there's any way for WaitForSingleObject to unlock the critical section... So won't a call to wait_and_pop() end up blocking the queue by indefinitely locking the critical section?
Source Code
When the boost condition variable waits, it takes the lock object as a parameter so that it can unlock the mutex until the condition variable is notified.
The code in GCC4 however is:
Source Code
I'm not extremely familiar with windows-specific threading, but it doesn't look like there's any way for WaitForSingleObject to unlock the critical section... So won't a call to wait_and_pop() end up blocking the queue by indefinitely locking the critical section?