Share via


método de condition_variable_any::wait_for

Bloquea un subproceso, y establece un intervalo de tiempo después del cual el subproceso se desbloquea.

template<
   class Lock,
   class Rep,
   class Period
>
bool wait_for(
   Lock& Lck,
   const chrono::duration<Rep,
   Period>& Rel_time
);
template<
   class Lock,
   class Rep,
   class Period,
   class Predicate
>
bool wait_for(
   Lock& Lck,
   const chrono::duration<Rep,
   Period>& Rel_time,
   Predicate Pred
);

Parámetros

  • Lck
    Un objeto de mutex de cualquier tipo.

  • Rel_time
    Un objeto de chrono::duration que especifica la cantidad de tiempo antes de que el subproceso despierte.

  • Pred
    Cualquier expresión que devuelve true o false.

Valor devuelto

El primer método devuelve cv_status::timeout si espera termina cuando ha transcurrido Rel_time .De lo contrario, el método devuelve cv_status::no_timeout.

El segundo método devuelve el valor de Pred.

Comentarios

Los primeros bloques de método hasta el objeto de condition_variable_any son devueltos por una llamada a notify_one o a notify_all, o hasta el intervalo de tiempo Rel_time ha transcurrido.También puede despertar false.

El segundo método en efecto ejecuta el código siguiente.

while(!Pred())
   if(wait_for(Lck, Rel_time) == cv_status::timeout)
      return Pred();
return true;

Requisitos

encabezado: condition_variable

espacio de nombres: std

Vea también

Referencia

clase condition_variable_any

<condition_variable>