For 1), wait_for doesn't always wait 1 second, that's a max wait time on a condition variable. If the condition variable gets notified after 1ms of the thread entering in the wait_for, the thread will wake up, exit from the wait_for and go on. Otherwise it will wait up to 1 second