Hot swapping a HashMap
I have a HashMap
that’s concurrently read by many threads and needs to be occasionally replaced in-place with a new instance.
Why will this Rust code NOT experience a deadlock?
use std::{sync::{Arc, Mutex}, thread, time::Duration}; fn main() { let mut forks = Vec::with_capacity(5); let mut handles = vec![]; for _ in 1..=5 { forks.push(Arc::new(Mutex::new(0))); } for i in 0..=4 { let left_fork = forks[i].clone(); let right_fork = forks[(i + 1) % 5].clone(); let handle = thread::spawn(move || { loop { println!(“philosopher {} is thinking…”, i); […]