Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use std::sync::{Mutex, Arc, RwLock};
- use std::thread;
- use std::collections::*;
- #[derive(Debug)]
- struct MyObject {
- field: i32,
- }
- fn main() {
- let mut map = Arc::new(RwLock::new(HashMap::new()));
- let first = MyObject { field: 0 };
- let second = MyObject { field: 1 };
- {
- map.write().unwrap().insert(&0, first);
- }
- {
- map.write().unwrap().insert(&1, second);
- }
- let mut handles = vec![];
- for x in 0..=1 {
- let clone = Arc::clone(&map);
- let handle = thread::spawn(move || {
- let mut out = clone.write().unwrap();
- let out = out.get_mut(&x).unwrap();
- out.field += 100;
- println!("XXResult: {:?}", out);
- });
- handles.push(handle);
- }
- for handle in handles {
- handle.join();
- }
- }
Add Comment
Please, Sign In to add comment