[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_variable
은 cv.wait()
를 호출하여 조건이 충족될 때까지 대기하고, worker_thread
함수에서 cv.notify_one()
로 신호를 보내어 조건을 충족시킵니다.