notes on multithreaded programming & memory ordering, with specifal focus on how Rust handles these topics notes