Запуск фоновой линии в Rust
Запуск создает новую линию выполнения и передает ей замыкание. В ответ программа получает ручку ожидания: по ней позже узнают, что фоновая работа закончилась.
Подключим модуль потока и выведем слово из фоновой линии, а ручку сохраним в переменную:
use std::thread;
fn main() {
let handle = thread::spawn(|| {
println!("worker");
});
match handle.join() {
Ok(_) => println!("ready"),
Err(_) => println!("failed"),
}
}
На экране сначала worker, затем
ready. Ручка живет в основной
линии и не исчезает, пока к ней не
обратятся для ожидания.
Замыкание может вернуть число; ручка типизирована под этот результат, хотя разбор значения мы отложим до отдельного шага:
use std::thread;
fn main() {
let handle = thread::spawn(|| 7);
match handle.join() {
Ok(v) => println!("{}", v),
Err(_) => println!("failed"),
}
}
Дано число:
let num = 11;
Запустите фоновую линию с замыканием, которое возвращает этот литерал. Сохраните ручку, дождитесь конца через разбор результата и выведите число.
Скажите, какой тип несет переменная с
ручкой, если замыкание возвращает
i32.
Дано число:
let num = 3;
Выведите start в основной линии,
запустите фоновую работу, которая
печатает этот литерал, и после ожидания
выведите end.