複数スレッドで読み取りは同時、書き込みは排他
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向き