rustHow do I share a variable between threads in Rust?
Sharing variables between threads in Rust can be done using the Arc
type from the std::sync
module. Arc
stands for atomic reference counting and allows multiple threads to access the same data.
use std::sync::Arc;
let data = Arc::new(vec![1, 2, 3]);
let thread_1 = std::thread::spawn(move || {
let data = data.clone();
println!("Thread 1 data: {:?}", data);
});
let thread_2 = std::thread::spawn(move || {
let data = data.clone();
println!("Thread 2 data: {:?}", data);
});
thread_1.join().unwrap();
thread_2.join().unwrap();
Output example
Thread 1 data: [1, 2, 3]
Thread 2 data: [1, 2, 3]
The code above creates a vector of numbers and stores it in an Arc
type. Then two threads are spawned, each of which clones the Arc
and prints the data.
Code explanation
let data = Arc::new(vec![1, 2, 3]);
- creates a vector of numbers and stores it in anArc
type.let thread_1 = std::thread::spawn(move || {
- spawns a thread.let data = data.clone();
- clones theArc
so that the thread can access the data.println!("Thread 1 data: {:?}", data);
- prints the data.
Helpful links
Related
- How do I zip variables in Rust?
- How do I write a variable to a file in Rust?
- How do I copy a variable in Rust?
- How do I increment a variable in Rust?
- How do I check if a variable is in a list of values in Rust?
- How do I print the address of a variable in Rust?
- How do I print the type of a variable in Rust?
- How do I identify unused variables in Rust?
- How do I print a variable in Rust?
- How do I use a variable in a match statement in Rust?
More of Rust
- How to replace a capture group using Rust regex?
- How to match a URL with a regex in Rust?
- How to match whitespace with a regex in Rust?
- How to replace strings using Rust regex?
- How to parse a file with Rust regex?
- How to get the length of a Rust HashMap?
- How to use an enum in a Rust HashMap?
- How to match the end of a line in a Rust regex?
- How to match digits with regex in Rust?
- How to convert a u8 slice to hex in Rust?
See more codes...