Hazard-Pointer
Methode, um zu wissen, wann es sicher ist, Speicher in einer lock-freien Datenstruktur freizugeben: Jeder Thread veröffentlicht offen, welche Pointer er gerade benutzt.
Das Problem: In einer lock-freien Struktur kann man einen Knoten nicht in dem Moment freigeben, in dem er ausgehängt wird, denn ein anderer Thread liest ihn vielleicht gerade noch. Maged Michaels Lösung von 2004: Jeder Thread besitzt einige Slots, in die er die Pointer schreibt, die er aktuell dereferenziert — und jeder andere darf diese Slots lesen. Wer einen Knoten freigeben will, legt ihn stattdessen auf eine private Liste und geht regelmäßig die Slots aller Threads durch: Knoten, die niemand veröffentlicht hat, werden freigegeben, der Rest wartet. Der Vorteil gegenüber epochenbasiertem Reclamation ist, dass der Speicherverbrauch begrenzt bleibt, selbst wenn ein Thread hängen bleibt; die Kosten sind eine Barriere pro Lesezugriff. Seit C++26 standardisiert.