std :: condition_variable :: notify_one () llamado varias veces sin cambio de contexto

Cuántos hilos en espera se activarán en este ejemplo:

1er hilo:

void wakeUp2Threads()
{
    std::unique_lock<std::mutex> lock(condvar_mutex);

    condvar.notify_one();
    condvar.notify_one();
}

Segundo hilo:

{
    std::unique_lock<std::mutex> lock(condvar_mutex);

    condvar.wait(lock); <- 2nd thread has entered here before 1st thread entered wakeUp2Threads.
}

3er hilo (lo mismo que 2º):

{
    std::unique_lock<std::mutex> lock(condvar_mutex);

    condvar.wait(lock); <- 3rd thread has entered here before 1st thread entered wakeUp2Threads.
}

¿Hay alguna garantía de que en este ejemplo ambas notificaciones se envíen a diferentes hilos, no al mismo hilo varias veces?

Es decir, ¿qué notifica de notificacion ()?

1) notify one thread, no matter has it been already notified (but has not been woken up yet), or not. (* see note)
or
2) notify one thread, but only this one, which has not been notified yet.

(*) ¡Presta atención! No estoy hablando aquí sobre el escenario "el hilo de espera ya había sido notificado en algún lugar en el pasado, despertado, hecho algunas cosas e ingresado de nuevo en condvar.wait ()", por supuesto, en este caso, varias rutinas de notificar uno () pueden activarse El mismo hilo una y otra vez.

Estoy hablando de otro caso:

Notify_one () ha notificado un subproceso en espera sobre la reactivación, pero ANTES de que este subproceso en espera haya recibido un intervalo de tiempo desde el programador del kernel y la ejecución continuada, se ha vuelto a llamar a NotifyCone ().¿Es posible que esta segunda notificación se envíe de nuevo al mismo hilo, aunque todavía no se haya despertado de la primera notificación?

Respuestas a la pregunta(1)

Su respuesta a la pregunta