
SyncEvent::wait() 메서드는 호출된 스레드가 SyncEvent이 set()으로 설정되는 때까지 블로킹 상태에 머무릅니다.
wait() 메서드는 다음 경우에 블로킹되지 않고 반환됩니다.
- SyncEvent이 이미 set()으로 설정되어 있는 경우
- InterruptedException이 발생한 경우
- timeout이 설정되어 있는 경우, 지정된 시간이 경과한 경우
예를 들어, SyncEvent::set()이 호출되지 않은 상태에서 wait()을 호출하면 블로킹 상태에 머무르게 됩니다.
wait()이 호출된 스레드가 InterruptedException을 발생시키는 경우, 다른 스레드가 set()을 호출할 때까지 기다리지 않습니다. InterruptedException이 발생하면 wait() 메서드는 즉시 반환됩니다.
위 코드 예시에서 스레드 1이 wait()을 호출한 후, 스레드 2가 set()을 호출하면 스레드 1은 InterruptedException을 발생시키지 않습니다. 스레드 1은 set()이 호출된 후 wait() 메서드가 반환되기 때문에 InterruptedException이 발생하지 않습니다.
#hostingforum.kr
cpp
SyncEvent event;
// 스레드 1
event.wait();
// 스레드 2
event.set();
위 코드 예시는 InterruptedException이 발생하지 않는 경우를 보여줍니다. 만약 InterruptedException이 발생하고자 한다면, 스레드 1이 wait() 메서드를 호출할 때 InterruptedException을 발생시키도록 설정해야 합니다.
#hostingforum.kr
cpp
SyncEvent event;
// 스레드 1
try {
event.wait();
} catch (InterruptedException e) {
// InterruptedException이 발생한 경우 수행할 코드
}
// 스레드 2
event.set();
2025-03-03 04:38