Rust does not use file permissions for concurrency safety; it enforces data access rules at compile time using ownership, move closures, and Mutex. To share mutable data across threads safely, wrap the data in a Mutex and pass ownership to the thread using a move closure.
use std::sync::Mutex;
use std::thread;
fn main() {
let counter = Mutex::new(0);
let mut handles = vec![];
for _ in 0..10 {
let handle = thread::spawn(move || {
let mut num = counter.lock().unwrap();
*num += 1;
});
handles.push(handle);
}
for handle in handles {
handle.join().unwrap();
}
println!("Result: {}", *counter.lock().unwrap());
}