Wdrażam mechanizm wskaźnika/wskaźnika słabego przy użyciu std::atomic
s dla licznika odwołań (np. this). Do konwersji słaby wskaźnik do silnego jednym muszę atomowoC++ inkrementacja std :: atomic_int if niezerowa
- sprawdzić, czy licznik silne odniesienia jest niezerowe
- jeśli tak, to przyrost
- wiem, czy coś się zmieniło.
Czy istnieje sposób, aby to zrobić za pomocą std::atomic_int
? Myślę, że to musi być możliwe przy użyciu jednego z compare_exchange
, ale nie mogę tego rozgryźć.
'std :: shared_ptr' wykorzystuje atomowe liczniki referencyjnych, wiesz. Zawsze możesz sprawdzić źródło. – Pubby
co znaczy "wiedzieć, czy coś się zmieniło"? – inf
Czy wartość różna od zera przed == czy była zwiększana. –