
Threaded::notify를 사용하여 다른 스레드에 알림을 보낼 때, notify() 메서드 호출 후 스레드가 바로 실행되는지 여부는 보장되지 않습니다. notify() 메서드는 스레드가 대기 중인 상태를 알 수 있지만, 실제로 실행되는 시점은 운영 체제에 의해 결정됩니다.
notify() 메서드는 wait() 메서드가 호출된 스레드가 대기 중인 상태를 알 수 있도록 합니다. 예를 들어, 다음 코드를 살펴보세요.
#hostingforum.kr
cpp
std::mutex mtx;
std::condition_variable cv;
bool ready = false;
void worker() {
std::unique_lock lock(mtx);
while (!ready) {
cv.wait(lock);
}
// 스레드가 여기까지 오면 notify() 메서드가 호출된 후에 실행됩니다.
}
int main() {
std::thread t1(worker);
// ...
std::lock_guard lock(mtx);
ready = true;
cv.notify_one();
// ...
return 0;
}
위 코드에서, worker() 함수는 notify() 메서드가 호출된 후에 실행됩니다. 그러나, notify() 메서드 호출 후에 바로 실행되는지 여부는 보장되지 않습니다.
notify() 메서드는 스레드가 대기 중인 상태를 알 수 있도록 하지만, 실제로 실행되는 시점은 운영 체제에 의해 결정됩니다. 운영 체제는 여러 스레드가 대기 중인 상태일 때, 어떤 스레드를 실행할지 결정합니다.
2025-05-04 15:20