Arc

Arc<T> は読み取り専用の共有アクセスをArc::cloneにより可能にします:

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Speaker Notes

This slide should take about 5 minutes.
  • Arc は“Atomic Reference Counted“の略で、アトミック操作を利用するという点で、Rcがスレッド安全になったバージョンのようなものです。
  • Arc<T>Clone を実装します。このことはTCloneを実装するしないに関係ありません。TSendSyncの両方を実装している場合で、かつその場合に限り、Arc<T> は両者を実装します。
  • Arc::clone()にはアトミック操作のコストがかかります。ただ、その後は、Tの利用に関するコストはかかりません。
  • 参照サイクルに気をつけてください。Arc には参照サイクルを検知するためのガベージコレクタはありません。
    • std::sync::Weak が役立ちます。