我正在学习 Rust 并且没有线程经验。我正在学习 Rustlings 课程并且我已经解决了这个threads1.rs练习,但我不明白为什么我的Mutex结构不需要被取消引用。
use std::sync::{Arc, Mutex};
use std::thread;
use std::time::Duration;
struct JobStatus {
jobs_completed: u32,
}
fn main() {
let status = Arc::new(Mutex::new(JobStatus { jobs_completed: 0 }));
let status_shared = Arc::clone(&status);
thread::spawn(move || {
for _ in 0..10 {
thread::sleep(Duration::from_millis(250));
let mut status_shared = status_shared.lock().unwrap();
status_shared.jobs_completed += 1; // why not *status_shared?
}
});
let mut jobs_completed: u32;
loop {
jobs_completed = status.lock().unwrap().jobs_completed;
if jobs_completed < 10 {
println!("waiting... ({} jobs done)", jobs_completed);
thread::sleep(Duration::from_millis(500)); …Run Code Online (Sandbox Code Playgroud)