Rust threading: Difference between revisions
From wikinotes
(Created page with "= Documentation = <blockquote> {| class="wikitable" |- | rust book: concurrency || https://doc.rust-lang.org/stable/book/ch16-00-concurrency.html |- |} </blockquote><!-- Documentation --> = Basics = <blockquote> Since rust already manages ownership semantics, you don't really need to deal with thread affinity.<br> Simply pass a closure to a thread, move any params to it, and call it a day. thead without outer scope access <syntaxhighlight lang="rust"> use std::thread;...") |
|||
Line 4: | Line 4: | ||
|- | |- | ||
| rust book: concurrency || https://doc.rust-lang.org/stable/book/ch16-00-concurrency.html | | rust book: concurrency || https://doc.rust-lang.org/stable/book/ch16-00-concurrency.html | ||
|- | |||
| <code>std::sync</code> || builtin synchronization primitives | |||
|- | |- | ||
|} | |} |
Revision as of 03:56, 10 February 2023
Documentation
rust book: concurrency https://doc.rust-lang.org/stable/book/ch16-00-concurrency.html std::sync
builtin synchronization primitives
Basics
Since rust already manages ownership semantics, you don't really need to deal with thread affinity.
Simply pass a closure to a thread, move any params to it, and call it a day.thead without outer scope access
use std::thread; use std::time::Duration; fn main() { let handle = thread::spawn(|| { for i in 1..=5 { println!("step {}/5..", i); thread::sleep(Duration::from_secs(1)); } }); handle.join().expect("unable to join thread"); }thread that moves outer-scope into thread's closure
use std::thread; use std::time::Duration; fn main() { let name = String::from("alex"); let handle = thread::spawn(move || { for _ in 1..=5 { println!("hi {}!", name); thread::sleep(Duration::from_secs(1)); } }); handle.join().expect("unable to join thread"); }
Channels
rust supports message passing between threads using a FIFO queue.