Разница между методами notify() и notify_all() при работе с условными переменными заключается в количестве разблокируемых потоков: 1
Метод notify() используют, когда все ожидающие потоки взаимозаменяемы (порядок их пробуждения не имеет значения), или когда есть только один ожидающий поток. 23
Метод notify_all() применяют в случаях, когда ожидающие потоки могут иметь разные цели и должны иметь возможность выполняться одновременно. 23