Namespaces
Variants

std::experimental:: flex_barrier

From cppreference.net
Definido en el encabezado <experimental/barrier>
class flex_barrier ;
(concurrency TS)

La clase std::experimental::flex_barrier proporciona un mecanismo de coordinación de hilos que permite a un conjunto de hilos participantes bloquearse hasta que se complete una operación. A diferencia de std::experimental::latch , las barreras son reutilizables; una vez que los hilos participantes son liberados del punto de sincronización de una barrera, pueden reutilizar la misma barrera.

Una barrera tiene una fase de finalización, que es ejecutada por uno de los hilos participantes una vez que todos los hilos en el conjunto de hilos participantes llegan al punto de sincronización. Las llamadas arrive_and_wait y arrive_and_drop se sincronizan con el inicio de la fase de finalización; el final de la fase de finalización se sincroniza con los retornos de todas las llamadas bloqueadas por su finalización.

std::experimental::flex_barrier permite al usuario controlar la fase de finalización con un objeto función. Si el objeto función retorna -1, el conjunto de hilos participantes permanece sin cambios (y el mismo conjunto de hilos participantes debe llegar al punto de sincronización en el siguiente ciclo); de lo contrario, el conjunto de hilos participantes se convierte en un nuevo conjunto con un tamaño igual al valor retornado N , y consiste en los siguientes N hilos que lleguen al punto de sincronización de la barrera.

Los usuarios que no necesiten esta funcionalidad pueden utilizar std::experimental::barrier .

Funciones miembro

construye un flex_barrier
(función miembro pública)
destruye el flex_barrier
(función miembro pública)
operator=
[deleted]
no asignable por copia
(función miembro pública)
llega al punto de sincronización y se bloquea
(función miembro pública)
llega al punto de sincronización y elimina el hilo actual del conjunto de hilos participantes
(función miembro pública)