Что такое std::condition_variable, что делает предикат и зачем он нужен?

std::conditionvariable используется для организации синхронизации между потоками в C++.

Короткий ответ

Что ответить на собеседовании

std::conditionvariable используется для организации синхронизации между потоками в C++. Она позволяет одному или нескольким потокам ожидать определённого условия и приостанавливать своё выполнение до тех пор, пока другое событие не уведомит их о наступлении этого условия.

Подробный разбор

Ответ с пояснениями

std::condition_variable используется для организации синхронизации между потоками в C++. Она позволяет одному или нескольким потокам ожидать определённого условия и приостанавливать своё выполнение до тех пор, пока другое событие не уведомит их о наступлении этого условия.

Основная роль:

  • Позволяет потокам эффективно ждать изменения состояния без активного опроса (busy-wait).
  • Используется вместе с std::mutex для безопасного доступа к общим данным.

Пример:

std::mutex mtx;
std::condition_variable cv;
bool ready = false;

void worker() {
    std::unique_lock<std::mutex> lock(mtx);
    cv.wait(lock, []{ return ready; }); // ждем, пока ready станет true
    // выполняем работу
}

void signal() {
    {
        std::lock_guard<std::mutex> lock(mtx);
        ready = true;
    }
    cv.notify_one(); // уведомляем один ожидающий поток
}

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку