Partager via


méthode de condition_variable_any::wait_until

Bloque un thread, et définit un maximum moment auquel le thread 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
    Un objet de mutex.

  • Abs_time
    Un objet de chrono::time_point .

  • Pred
    Toute expression qui retourne true ou false.

Valeur de retour

Méthodes qui retournent un type de retour cv_status::timeout d' cv_status si l'attente se termine lorsque Abs_time s'écoule.Sinon, les méthodes cv_status::no_timeoutde retour.

Méthodes qui retournent un retour d' bool la valeur d' Pred.

Notes

Les premiers blocs de méthode jusqu'à l'objet d' condition_variable signalé est par un appel à notify_one ou à notify_all, ou qu' Abs_time.Il peut également se réveiller faussement.

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

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

Le troisième et le quatrième méthodes utilisent un pointeur vers un objet de type xtime pour remplacer l'objet d' chrono::time_point .L'objet d' xtime spécifie la quantité maximale de l'heure d'attendre un signal.

Configuration requise

en-tête : condition_variable

l'espace de noms : DST

Voir aussi

Référence

classe condition_variable

<condition_variable>