Hazard pointers
Een manier om te weten wanneer geheugen veilig vrijgegeven kan worden in een lock-free datastructuur: elke thread maakt openlijk bekend welke pointers hij op dat moment gebruikt.
Het probleem is dat je in een lock-free structuur een knooppunt niet kunt vrijgeven zodra het is losgekoppeld, want een andere thread kan het op dat moment nog aan het lezen zijn. De oplossing van Maged Michael uit 2004: elke thread heeft een aantal slots waarin hij de pointers schrijft die hij op dat moment dereferenceert, en alle anderen kunnen die slots lezen. Een thread die een knooppunt wil vrijgeven zet het in plaats daarvan op een privélijst en doorloopt periodiek de slots van alle threads — knooppunten die niemand heeft aangemeld worden vrijgegeven, de rest wacht. Het voordeel ten opzichte van epoch-based reclamation is dat het geheugengebruik begrensd blijft, ook als een thread blijft hangen; de prijs is een fence per leesactie. Gestandaardiseerd in C++26.