【Rust】RwLockの使い所

複数スレッドで読み取りは同時、書き込みは排他


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向き