C ++ erhöht std :: atomic_int wenn ungleich Null

8

Ich implementiere einen Zeiger / schwachen Zeiger-Mechanismus mit std::atomic s für den Referenzzähler (wie dies ) . Um einen schwachen Zeiger in einen starken zu konvertieren, muss ich atomar arbeiten

  • Überprüfen Sie, ob der starke Referenzzähler ungleich Null ist
  • Wenn ja, inkrementiere es
  • weiß, ob sich etwas geändert hat.

Gibt es eine Möglichkeit, dies mit std::atomic_int zu tun? Ich denke, es muss möglich sein, einen der compare_exchange zu verwenden, aber ich kann es nicht herausfinden.

    
lucas clemente 19.12.2012, 10:08
quelle

2 Antworten

3

Gegeben die Definition std::atomic<int> ref_count;

%Vor%

previous enthält den vorherigen Wert. Beachten Sie, dass compare_exchange_weak die vorherige Version aktualisiert, wenn sie fehlschlägt.

    
ymett 19.12.2012, 11:10
quelle
1

Das sollte es tun:

%Vor%     
inf 19.12.2012 11:11
quelle

Tags und Links