Se recomienda usar Visual Studio 2017

condition_variable_any (Clase)

 

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

Utilice la clase condition_variable_any para esperar un evento que tenga cualquier tipo mutex.

class condition_variable_any;

Constructores públicos

NombreDescripción
Constructor de condition_variable_any::condition_variable_anyConstruye un objeto condition_variable_any.

Métodos públicos

NombreDescripción
condition_variable_any:: notify_all (método)Desbloquea todos los subprocesos que están esperando el objeto condition_variable_any.
condition_variable_any:: notify_one (método)Desbloquea uno de los subprocesos que están esperando el objeto condition_variable_any.
condition_variable_any:: Wait (método)Bloquea un subproceso.
condition_variable_any:: wait_for (método)Bloquea un subproceso y establece un intervalo de tiempo después del cual el subproceso se desbloquea.
condition_variable_any:: wait_until (método)Bloquea un subproceso y establece un punto máximo en el tiempo en el que el subproceso se desbloquea.

Encabezado: condition_variable

Espacio de nombres: std

Construye un objeto condition_variable_any.

condition_variable_any();

Comentarios

Si no hay suficiente memoria disponible, el constructor produce una system_error objeto que tiene un not_enough_memory código de error. Si el objeto no puede construirse porque algún otro recurso no está disponible, el constructor produce un objeto system_error que tiene un código de error de resource_unavailable_try_again.

Desbloquea todos los subprocesos que están esperando el objeto condition_variable_any.

void notify_all() noexcept;

Desbloquea uno de los subprocesos que están esperando el objeto condition_variable_any.

void notify_one() noexcept;

Bloquea un subproceso.

template <class Lock>  
void wait(
    Lock& Lck);

template <class Lock, class Predicate>
void wait(
    Lock& Lck,
    Predicate Pred);

Parámetros

Lck
Objeto mutex de cualquier tipo.

Pred
Cualquier expresión que devuelve true o false.

Comentarios

El primer método se bloquea hasta que el condition_variable_any objeto se señaliza mediante una llamada a notify_one o notify_all. También se puede reactivar en falso.

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

while (!Pred())
    wait(Lck);

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
Objeto mutex de cualquier tipo.

Rel_time
Objeto chrono::duration que especifica la cantidad de tiempo que tiene que transcurrir hasta que el subproceso se reactive.

Pred
Cualquier expresión que devuelve true o false.

Valor devuelto

El primer método devuelve cv_status::timeout si la 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

El primer método se bloquea hasta que el condition_variable_any objeto se señaliza mediante una llamada a notify_one o notify_all, o hasta que el intervalo de tiempo Rel_time ha transcurrido. También se puede reactivar en falso.

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;

Bloquea un subproceso y establece un punto máximo en el tiempo en el que el subproceso se desbloquea.

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

Parámetros

Lck
Objeto de exclusión mutua.

Abs_time
Un chrono:: time_point objeto.

Pred
Cualquier expresión que devuelve true o false.

Valor devuelto

Los métodos que devuelven un tipo cv_status devuelven cv_status::timeout si la espera termina cuando transcurre Abs_time. De lo contrario, los métodos devuelven cv_status::no_timeout.

Los métodos que devuelven un tipo bool devuelven el valor de Pred.

Comentarios

El primer método se bloquea hasta que el condition_variable objeto se señaliza mediante una llamada a notify_one o notify_all, o hasta que Abs_time. También se puede reactivar en falso.

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

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

return true;

Los métodos tercero y cuarto utilizan un puntero a un objeto de tipo xtime para reemplazar el objeto chrono::time_point. El objeto xtime especifica el tiempo máximo que hay que esperar una señal.

Referencia de archivos de encabezado
<condition_variable></condition_variable>

Mostrar: