condition_variable::wait_for 메서드
스레드를 차단 하 고 이후의 스레드는 차단 되는 시간 간격을 설정 합니다.
template<
class Rep,
class Period
>
cv_status wait_for(
unique_lock<mutex>& Lck,
const chrono::duration<Rep,
Period>& Rel_time
);
template<
class Rep,
class Period,
class Predicate
>
bool wait_for(
unique_lock<mutex>& Lck,
const chrono::duration<Rep,
Period>& Rel_time,
PredicatePred
);
매개 변수
Lck
unique_lock<mutex> 개체Rel_time
A chrono::duration 스레드를 하기 전에 시간을 지정 하는 개체를 활성화 합니다.Pred
반환 되는 모든 식 true 또는 false.
반환 값
첫 번째 메서드를 반환 합니다. cv_status::timeout 대기 시 종료 되는 경우 Rel_time 경과 되었습니다.그렇지 않으면 이 메서드는 cv_status::no_timeout을 반환합니다.
값을 반환 하는 두 번째 방법은 Pred.
설명
첫 번째 메서드는 차단 될 때까지 condition_variable 개체를 호출 하 여 신호입니다 notify_one 또는 notify_all 까지 시간 간격 또는 Rel_time 경과 되었습니다.이 또한 spuriously 깨울 수 있습니다.
두 번째 방법은 효과적으로 다음 코드를 실행합니다.
while(!Pred())
if(wait_for(Lck, Rel_time) == cv_status::timeout)
return Pred();
return true;
요구 사항
헤더: condition_variable
네임 스페이스: std