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