Namespaces
Variants

std::experimental:: barrier

From cppreference.net
Défini dans l'en-tête <experimental/barrier>
class barrier ;
(concurrency TS)

La classe std::experimental::barrier fournit un mécanisme de coordination de threads qui permet à un ensemble de threads participants de se bloquer jusqu'à ce qu'une opération soit terminée. Contrairement au std::experimental::latch , les barrières sont réutilisables ; une fois que les threads participants sont libérés du point de synchronisation d'une barrière, ils peuvent réutiliser la même barrière.

Une barrière possède une phase de complétion, qui est exécutée par l'un des threads participants une fois que tous les threads de l'ensemble des threads participants atteignent le point de synchronisation. Les appels arrive_and_wait et arrive_and_drop se synchronisent avec le début de la phase de complétion ; la fin de la phase de complétion se synchronise avec les retours de tous les appels bloqués par sa complétion.

Pour std::experimental::barrier , la phase de complétion est vide. std::experimental::flex_barrier permet à l'utilisateur de contrôler la phase de complétion avec un objet fonction.

L'ensemble des threads participants pour une barrier construite pour num_threads threads correspond aux premiers num_threads threads à atteindre son point de synchronisation après la construction. Le même ensemble de threads (à l'exception des threads ayant appelé arrive_and_drop() ) doit atteindre la barrier à chaque cycle.

Fonctions membres

construit un barrier
(fonction membre publique)
détruit la barrière
(fonction membre publique)
operator=
[deleted]
non assignable par copie
(fonction membre publique)
arrive au point de synchronisation et se bloque
(fonction membre publique)
arrive au point de synchronisation et retire le thread courant de l'ensemble des threads participants
(fonction membre publique)