Una barrera es una estructura similar a un semáforo. Permite a múltiples hilos sincronizarse temporalmente para que los hilos esperen a que todos los hilos hayan llegado a cierto punto del código.

Se puede pensar como un semáforo, en el que el wait en lugar de esperar a que haya recurso disponible, espera a que no haya recurso disponible.

Luego, si todos hilos realizan wait de un semáforo con capacidad n, entonces se liberarán una vez todos hayan hecho wait.

Barreras en Rust

Permiten sincroniza varios hilos en puntos determinados de un cálculo o algoritmo.

  • Para crear una barrera, utilizamos fn new(n: usize)
  • Para bloquear el hilo hasta que todos se encuentren en el punto, utilizamos fn wait(&self).

El método is_leader() devolverá true en el hilo líder. Al levantar la barrera, el último hilo en llamar wait() se designa como líder.

Las barreras son reutilizables automáticamente.