Partager via


condition_variable_any::wait_until, méthode

Bloque un thread, et définit un moment maximal auquel le thread se débloque.

template<class Lock, class Clock, class Duration>
   void wait_until(
      Lock& Lck, 
      const chrono::time_point<Clock, Duration>& Abs_time);
template<class Lock, class Clock, class Duration, class Predicate>
   void wait_until(
      Lock& Lck,
      const chrono::time_point<Clock, Duration>& Abs_time,
      Predicate Pred);
template<class Lock>
   void wait_until(
      Lock Lck,
      const xtime *Abs_time);
template<class Lock, class Predicate>
   void wait_until(
      Lock Lck,
      const xtime *Abs_time,
      Predicate Pred);

Paramètres

  • Lck
    Objet Mutex

  • Abs_time
    Objet chrono::time_point.

  • Pred
    Toute expression qui retourne true ou false.

Valeur de retour

Méthodes qui retournent une valeur cv_status::timeout de type cv_status si l'attente se termine lorsque Abs_time s'écoule. Sinon, ces méthodes retournent cv_status::no_timeout.

Méthodes qui retournent un bool retournent la valeur de Pred.

Notes

La première méthode bloque jusqu'à ce que l'objet condition_variable soit signalé par un appel à notify_one ou notify_all ou encore jusqu'à Abs_time. Il peut également se réveiller faussement.

La deuxième méthode en vigueur exécute le code suivant.

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

La troisième et la quatrième méthodes utilisent un pointeur vers un objet de type xtime pour remplacer l'objet chrono::time_point. L'objet xtime spécifie la durée d'attente maximale pour un signal.

Configuration requise

En-tête : condition_variable

Espace de noms : std

Voir aussi

Référence

condition_variable, classe

<condition_variable>