std::experimental:: barrier
|
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) |