C++ y las vallas asimétricas: cómo membarrier() acelera el código concurrente

C++ Details of Asymmetric Fences

C++ y las vallas asimétricas: cómo membarrier() acelera el código concurrente

El autor explora las vallas asimétricas de C++ (propuesta P1202R0) y su implementación en Linux a través de la llamada al sistema membarrier(). Explica cómo optimizar la ruta común de un algoritmo concurrente usando una barrera de compilador, mientras que la ruta poco común asume el coste de una barrera de hardware completa. Incluye ejemplos de Dekker y referencias a su uso en Folly, y detalla el funcionamiento de membarrier() y sus comandos PRIVATE_EXPEDITED.

La idea clave es reemplazar las barreras de memoria del lado rápido por simples barreras de compilador, y las del lado lento por llamadas a membarrier(), lo que añade sobrecarga al lado lento y la elimina del lado rápido.

Más de este día

2026-07-07