Progrust Library.

// dictionary

Arc<T> (Atomic Reference Counting).

Arc

Arc<T> (Atomic Reference Counted) は、Rc<T> (Reference Counting)のマルチスレッド対応版です。複数のスレッドが同じ値を共有する場合に使用します。

スレッド間の値共有

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

fn main() {
    let counter = Arc::new(0);
    let mut handles = vec![];
    
    for _ in 0..10 {
        let counter = Arc::clone(&counter);
        let h = thread::spawn(move || {
            // 複数のスレッドが同じ値を参照
        });
        handles.push(h);
    }
    
    for h in handles {
        h.join().unwrap();
    }
}

スレッドセーフなロック管理

use std::sync::{Arc, Mutex};

let data = Arc::new(Mutex::new(vec![]));
let data_clone = Arc::clone(&data);

thread::spawn(move || {
    let mut v = data_clone.lock().unwrap();
    v.push(1);
});

Rc<T> (Reference Counting) での参照カウント手法はスレッド環境では使えないため、必ず Arc を使用してください。

この辞書が使われているページ

backlinks 1

  1. 辞書Rc<T> (Reference Counting)