Como posso esperar por várias coisas?

Estou escrevendo uma fila segura de thread usando C ++ 11 e stl threading. O método WaitAndPop atualmente se parece com o seguinte. Eu gostaria de poder passar algo para WaitAndPop que indica se o segmento de chamada foi solicitado a parar. WaitAndPop deve retornar true se ele esperou e retornou um elemento da fila, ele deve retornar false se o segmento de chamada estiver sendo parado.

    bool WaitAndPop(T& value, std::condition_variable callingThreadStopRequested)
    {
        std::unique_lock<std::mutex> lock(mutex);
        while( queuedTasks.empty() )
        {
            queuedTasksCondition.wait(lock);
        }

        value = queue.front();
        queue.pop_front();
        return true;
    }

É possível codificar algo assim? Estou acostumado a um Win32 WaitForMultipleObjects, mas não consigo encontrar uma alternativa que funcione para este caso.

Obrigado.

Eu vi essa pergunta relacionada, mas ela não respondeu ao problema.aprendendo tópicos no linux

questionAnswers(1)

yourAnswerToTheQuestion