std::unique_ptr<Work> waitForWork() { LockMutex m(queueMutex); while (queue.empty() && queueAlive) SDL_CondWait(queueCond, queueMutex); if (!queueAlive) throw StopWorker(); auto ret = std::move(queue[0]); queue.erase(queue.begin()); return ret; }
// Signals stop to worker // and wait when it stopped void SaveStopWorker() { StopWorker(); worker.wait(); }