1
對於Rust book concurrency一章中的以下示例代碼。爲什麼Rust遊樂場不會產生不同的線程結果?
use std::sync::{Arc, Mutex};
use std::thread;
use std::time::Duration;
fn main() {
let data = Arc::new(Mutex::new(vec![1, 2, 3]));
for i in 0..3 {
let data = data.clone();
thread::spawn(move || {
let mut data = data.lock().unwrap();
data[0] += i;
println!("{}", data[0]);
});
}
thread::sleep(Duration::from_millis(50));
}
我的朋友和我分別跑了鏽操場這個代碼,並始終得到了相同的順序:3, 4, 4
,所以它似乎螺紋總是在2, 1, 0
的順序啓動。
對於多線程編程,我們不應該永遠不知道哪個線程將首先啓動,因爲沒有固定的運行產生的線程的順序? Rust是否被認爲是一臺計算機?