Compartilhar via


Método condition_variable::wait_until

Bloqueia um thread e define um ponto no tempo máximo em que o thread é desbloqueado.

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
);

Parâmetros

  • Lck
    Um objeto unique_lock<mutex>.

  • Abs_time
    Um objeto chrono::time_point.

  • Pred
    Qualquer expressão que retorna true ou false.

Valor de retorno

Métodos que retornam um tipo de cv_status::timeout retornam cv_status se a espera encerrar quando Abs_time decorrer. Caso contrário, os métodos retornam cv_status::no_timeout.

Métodos que retornam um bool retornam o valor de Pred.

Comentários

Os primeiros blocos de método até o objeto condition_variable ser sinalizado por uma chamada para notify_one ou notify_all ou até Abs_time. Também pode ser ativado de forma artificial.

Aplicado, o segundo método executa o seguinte código

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

Os terceiro e quarto métodos usam um ponteiro para um objeto do tipo xtime para substituir o objeto chrono::time_point . O objeto xtime especifica a quantidade de tempo máxima para aguardar um sinal.

Requisitos

Cabeçalho: condition_variable

std de Namespace:

Consulte também

Referência

Classe condition_variable

<condition_variable>