複数スレッドで読み取りは同時、書き込みは排他
use std::sync::{Arc, RwLock};
use std::thread;
fn main() {
let data = Arc::new(RwLock::new(5));
let readers: Vec<_> = (0..3).map(|i| {
let data = Arc::clone(&data);
thread::spawn(move || {
let read = data.read().unwrap();
println!("Thread {} read: {}", i, *read);
})
}).collect();
{
let mut write = data.write().unwrap();
*write += 1;
println!("Main thread wrote: {}", *write);
}
}
書き込みが多い場合はmutex向き