Léxico TI › Programación › Hazard pointers

Hazard pointers

Programación Svenska → Actualizado: 2026-08-20

Un método para saber cuándo es seguro liberar memoria en una estructura de datos lock-free: cada hilo publica abiertamente qué punteros está usando en cada momento.

El problema a resolver es que en una estructura lock-free no se puede liberar un nodo en el mismo instante en que se desenlaza, porque otro hilo bien podría estar en mitad de su lectura. La solución de Maged Michael de 2004 consiste en que cada hilo tiene una serie de casillas donde anota los punteros que está desreferenciando en ese momento, y cualquier otro hilo puede leer esas casillas. Quien quiere liberar un nodo lo coloca en su lugar en una lista privada y recorre periódicamente las casillas de todos los hilos — los nodos que nadie ha publicado se liberan, el resto espera. La ventaja frente a la recuperación basada en épocas es que el consumo de memoria queda acotado incluso si un hilo se atasca; el coste es una barrera por cada lectura. Estandarizado en C++26.

← Volver al léxico