Udostępnij za pośrednictwem


Metoda CONDITION_VARIABLE::wait_until

Blokuje wątku i ustawia maksymalny punkt w czasie, w którym odblokowuje wątku.

template<
   class Clock,
   class Duration
>
cv_status wait_until(
   unique_lock<mutex>& Lck,
   const chrono::time_point<Clock,
   Duration>& Abs_time
);
template<
   class Clock,
   class Duration,
   class Predicate
>
bool wait_until(
   unique_lock<mutex>& Lck,
   const chrono::time_point<Clock,
   Duration>& Abs_time,
   Predicate Pred
);
cv_status wait_until(
   unique_lock<mutex>& Lck,
   const xtime *Abs_time
);
template<class Predicate>
bool wait_until(
   unique_lock<mutex>& Lck,
   const xtime *Abs_time,
   Predicate Pred
);

Parametry

  • Lck
    A unique_lock<mutex> object.

  • Abs_time
    A chrono::time_point object.

  • Pred
    Wyrażenie zwraca true lub false.

Wartość zwracana

Metody, które zwracają cv_status wpisz return cv_status::timeout Jeśli oczekiwania kończy, gdy Abs_time upływa.W przeciwnym razie zwraca metody cv_status::no_timeout.

Metody, które zwracają bool zwraca wartość Pred.

Uwagi

Pierwsza metoda blokuje aż do condition_variable obiektu jest sygnalizowane przez wywołanie notify_one lub notify_all lub Abs_time.To może również wake up spuriously.

Druga metoda skutecznie wykonuje następujący kod.

while(!Pred())
   if(wait_until(Lck, Abs_time) == cv_status::timeout)
      return Pred();
return true;

Trzeci i czwarty metody za pomocą wskaźnika do obiektu typu xtime do zastąpienia chrono::time_point obiektu.xtime Obiektu określa maksymalny czas oczekiwania na sygnał.

Wymagania

Nagłówek: condition_variable

Obszar nazw: std

Zobacz też

Informacje

Klasa CONDITION_VARIABLE

<condition_variable>