Sobes.tech
Назад к вопросам
Junior — Middle
90

Какова основная роль std::condition_variable в многопоточном программировании?

Компании, где спрашивали
ГК Адепт

Ответ от нейросети

sobes.tech AI

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(); // уведомляем один ожидающий поток
}