РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1036 of 1245 menu

Класс JoinHandle

Класс JoinHandle представляет собой дескриптор, который возвращается при создании нового потока с помощью функции spawn или метода spawn класса Builder. Он позволяет управлять жизненным циклом потока: дожидаться его завершения, проверять, завершился ли поток, а также получать результат, возвращаемый замыканием потока. Класс JoinHandle является обобщенным и параметризуется типом возвращаемого значения T.

Синтаксис

std::thread::JoinHandle<T>

Пример

Давайте создадим поток с помощью функции spawn и получим дескриптор JoinHandle. Затем дождемся завершения потока с помощью метода join:

use std::thread; fn main() { let handle = thread::spawn(|| { println!("Hello from thread!"); 42 }); let res = handle.join().unwrap(); println!("Thread returned: {}", res); }

Результат выполнения кода:

Hello from thread! Thread returned: 42

Пример

Давайте проверим, завершился ли поток, с помощью метода is_finished:

use std::thread; use std::time::Duration; fn main() { let handle = thread::spawn(|| { thread::sleep(Duration::from_millis(100)); "done" }); println!("Finished: {}", handle.is_finished()); thread::sleep(Duration::from_millis(200)); println!("Finished: {}", handle.is_finished()); }

Результат выполнения кода:

Finished: false Finished: true

Пример

Давайте передадим значение из потока через возвращаемое значение замыкания и получим его с помощью метода join:

use std::thread; fn main() { let handle = thread::spawn(|| { let mut sum = 0; for i in 1..=5 { sum += i; } sum }); let res = handle.join().unwrap(); println!("Sum: {}", res); }

Результат выполнения кода:

Sum: 15

Смотрите также

  • метод join,
    который ожидает завершения потока и возвращает результат
  • метод is_finished,
    который проверяет, завершился ли поток
  • класс Thread,
    который представляет собой дескриптор потока
  • функция spawn,
    которая создает новый поток и возвращает JoinHandle
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить