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

Метод join

Метод join принадлежит классу JoinHandle и используется для ожидания завершения дочернего потока. Когда поток создаётся с помощью функции spawn, она возвращает JoinHandle. Вызов join на этом дескрипторе блокирует текущий поток до тех пор, пока связанный с ним поток не закончит работу. Метод не принимает параметров и возвращает значение типа Result, содержащее результат, который вернул завершившийся поток, либо ошибку, если поток паниковал.

Синтаксис

join_handle.join()

Пример

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

use std::thread; fn main() { let handle = thread::spawn(|| { return 42; }); let res = handle.join(); println!("{:?}", res); }

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

Ok(42)

Пример

Давайте создадим поток, который возвращает строку, и дождёмся его завершения:

use std::thread; fn main() { let handle = thread::spawn(|| { return "abcde"; }); let res = handle.join(); println!("{:?}", res); }

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

Ok("abcde")

Пример

Давайте создадим поток, который паникует, и посмотрим, как join вернёт ошибку:

use std::thread; fn main() { let handle = thread::spawn(|| { panic!("something went wrong"); }); let res = handle.join(); println!("{:?}", res.is_err()); }

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

true

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

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