Compartir a través de


método de condition_variable::wait_for

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

template<
   class Rep,
   class Period
>
cv_status wait_for(
   unique_lock<mutex>& Lck,
   const chrono::duration<Rep,
   Period>& Rel_time
);
template<
   class Rep,
   class Period,
   class Predicate
>
bool wait_for(
   unique_lock<mutex>& Lck,
   const chrono::duration<Rep,
   Period>& Rel_time,
   PredicatePred
);

Parámetros

  • Lck
    Un objeto unique_lock<mutex>.

  • 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 son devueltos por una llamada a notify_one o notify_all o hasta el intervalo de tiempo Rel_time ha transcurrido.También puede despertar false.

El segundo método ejecuta eficazmente 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

<condition_variable>