Arc

Arc<T> дозволяє спільний доступ лише для читання через Arc::clone:

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Speaker Notes

This slide should take about 5 minutes.
  • Arc означає “Atomic Reference Counted”, потокобезпечну версію Rc, яка використовує атомарні операції.
  • Arc<T> реалізує Clone незалежно від того, чи T реалізує це. Він реалізує Send і Sync тоді і тільки тоді коли T реалізує їх обидва.
  • Arc::clone() має вартість атомарних операцій, які виконуються, але після цього використання T є безкоштовним.
  • Остерігайтеся циклів посилань, Arc не використовує збирач сміття для їх виявлення.
    • std::sync::Weak може допомогти.