[c++] C++에서의 조건변수 사용

C++의 조건 변수를 사용하려면 std::condition_variable 헤더를 포함하고, 기본 std::mutex와 함께 사용해야 합니다. 아래는 간단한 예제 코드입니다.

#include <iostream>
#include <thread>
#include <condition_variable>

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

void worker_thread() {
    // 일부 작업 수행
    std::this_thread::sleep_for(std::chrono::seconds(1));

    // 작업 완료 후 조건 변수로 신호 전달
    {
        std::lock_guard<std::mutex> lk(mtx);
        ready = true;
    }
    cv.notify_one();
}

int main() {
    std::thread worker(worker_thread);

    // 조건 충족까지 대기
    {
        std::unique_lock<std::mutex> lk(mtx);
        cv.wait(lk, [] { return ready; });
    }

    std::cout << "조건 충족, 작업 완료" << std::endl;

    worker.join();
    return 0;
}

이 예제에서 std::condition_variablecv.wait()를 호출하여 조건이 충족될 때까지 대기하고, worker_thread 함수에서 cv.notify_one()로 신호를 보내어 조건을 충족시킵니다.

참고 자료