Namespaces
Variants

std::experimental:: barrier

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

La clase std::experimental::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.

Para std::experimental::barrier , la fase de finalización está vacía. std::experimental::flex_barrier permite al usuario controlar la fase de finalización con un objeto función.

El conjunto de hilos participantes para una barrier construida para num_threads hilos son los primeros num_threads hilos en llegar a su punto de sincronización después de la construcción. El mismo conjunto de hilos (excepto los hilos que llamaron a arrive_and_drop() ) debe llegar a la barrier cada ciclo.

Funciones miembro

construye un barrier
(función miembro pública)
destruye la barrera
(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)