Независимо от того, сколько раз я запустить программу, она всегда показывает числа в том же порядке:станд :: синхронизация :: MPSC :: канал всегда в том же порядке
use std::sync::mpsc::channel;
use std::thread;
fn main() {
let (tx, rx) = channel();
for i in 0 ..10 {
let tx = tx.clone();
thread::spawn(move || {
tx.send(i).unwrap();
});
}
for _ in 0..10 {
println!("{}", rx.recv().unwrap());
}
}
код на playground. Выходной сигнал:
6
7
8
5
9
4
3
2
1
0
Если я перестрою проект, последовательность изменится. Является ли последовательность во время компиляции?
Обратите внимание, что игровая площадка кэширует выходные данные, поэтому, если вы дважды запускаете ту же программу без ее изменения, вы получите тот же результат. Когда я нажимаю на ссылку на игровое поле и запускаю его, я получаю ту же последовательность, что и вы. Когда я добавил пробел в конец последней строки, чтобы принудительно возобновить работу, я получил немного другую последовательность. –