関連

名前は、Atomically Reference Counted (原子参照カウント)の略。

Arc<T>Rc<T>のマルチスレッドでも使える版です。型Atomicを操作する為R<T>よりもオーバーヘッドが高いです。またTTrait std::marker::SendTrait std::marker::Sync を持っている必要があります。

use std::sync::Arc;
use std::thread;

let thirty_three: Arc> = Arc::new(vec![1, 2, 3]);

for _ in 0..3 {
  let ref_thirty_three = thirty_three.clone();
  let handler = thread::spawn(move || {
    let repeated = ref_thirty_three.repeat(2);

    assert_eq!(repeated, vec![1, 2, 3, 1, 2, 3]);
  });

  handler.join().unwrap();
}

JavaScript で飯食べたい歴約 8 年、 純( nju33 ) によるノートサイトです。

このサイトではドリンク代や奨学金返済の為、広告などを貼らせて頂いてますがご了承ください。

Change Log