Условная переменная — это примитив синхронизации, используемый для организации взаимодействия между потоками. Она позволяет потоку (или потокам) ждать наступления определенного условия, пока другой поток не уведомит его (их) о выполнении этого условия. Обычно используется совместно с мьютексом для обеспечения атомарности проверки условия и ожидания.
Основные операции:
Проблема ложных пробуждений (spurious wakeups): Поток может быть разбужен, даже если notify_one или notify_all не были вызваны. Поэтому ожидание на условной переменной всегда должно происходить в цикле, проверяющем условие.
Пример на C++ (используя std::condition_variable):
cpp