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