// 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