Thread_Impl(concurrent_queue<Task *> &q, Monitor &mon) : queue(q) , monitor(mon.GetMutex()) , live(true) , started(false) , thread(ThreadFunction, ThreadFunctionArg(*this, started)) { while(!started){ monitor.NotifyAll(); } }