Le seguenti operazioni sono senza blocco per std::unique_ptr
e/o std::shared_ptr
?I puntatori intelligenti C++ sono bloccati?
- Dereferencing, cioè
read(*myPtr)
omyPtr->getSomething()
- Rimozione di riferimento, ossia con
std::move(myUniquePtr)
o quando unstd::shared_ptr
passa nell'ambito.
Nel mio caso, non accedo contemporaneamente a questi puntatori da più thread. Sono solo curioso di poterli usare esclusivamente su un thread lock-free ad alta priorità. Gli oggetti gestiti dai puntatori sono stati allocati dal thread principale prima dei callback con priorità alta e non verranno deallocati fino alla cessazione delle callback.
Grazie!
uso questi http://en.cppreference.com/w/cpp/memory/shared_ptr/atomic –
Si noti che 'move' e andare fuori scooe sono molto ** ** diverso. 'move' * mai * cambia il conteggio dei riferimenti. – Yakk
@bryanchen quelli sono per più thread una variabile, che non è ciò che l'OP sta parlando di methinks. – Yakk