[Day4] Read Rust Atomics and Locks
At Topics: Chapter 1. Basics of Rust Concurrency
until: The Leakpocalypse
Sync to My Blog: https://my-blog-chengr4.vercel.app/posts/day4-read-rust-atomics-and-locks_230508
Prerequisites
- Know
‘static
: A reference can live for the entire duration of the program
Notes
std::thread::scope
spawn scoped threads => possible to safely borrow local variables. eg:
let numbers = vec![1, 2, 3];
// it does not have a 'static bound
// allowing us to ref. anything as long as it outlives the scope, such as number
thread::scope(|s| {
s.spawn(|| {
println!("length: {}", numbers.len());
});
s.spawn(|| {
for n in &numbers {
println!("{n}");
}
});
}); // the program waits for both spawned threads to finish executing before continuing
- The “Leakpocalypse”: The design of a safe interface cannot rely on the assumption that objects will always be dropped at the end of their lifetime.
Eg. a cycle of reference-counted nodes
- Leaking is always a possibility
Not Understand Yet
- Actually the topic: The Leakpocalypse