rust armanazi thread multi arc mutex
To use multi-threading in Rust with the arc
and mutex
modules, you can follow these steps:
- Import the necessary modules:
use std::sync::{Arc, Mutex};
use std::thread;
- Create a shared data structure using
Arc
andMutex
:
let shared_data = Arc::new(Mutex::new(0));
- Spawn multiple threads and access the shared data:
let mut handles = vec![];
for _ in 0..10 {
let shared_data = Arc::clone(&shared_data);
let handle = thread::spawn(move || {
let mut data = shared_data.lock().unwrap();
*data += 1;
});
handles.push(handle);
}
for handle in handles {
handle.join().unwrap();
}
In this example, we create a shared data structure shared_data
using Arc
and Mutex
. We then spawn 10 threads, each of which locks the Mutex
, increments the shared data, and releases the lock. Finally, we wait for all the threads to finish using join()
.
This approach ensures that only one thread can access the shared data at a time, preventing data races and ensuring thread safety.
I hope this helps! Let me know if you have any further questions.