I am using a SynchronisedQueue to communicate between threads. I found that destroying the thread object when the attaching thread is waiting on a condition var
SynchronisedQueue
You cannot, ever, destroy a resource while something is, or might be, using it. That's really just common sense.