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

Метод is_finished

Метод is_finished проверяет, завершился ли поток, связанный с объектом JoinHandle. Он возвращает true, если поток уже завершил своё выполнение, и false в противном случае. Метод не принимает параметров и не блокирует текущий поток - он лишь возвращает текущее состояние.

Синтаксис

join_handle.is_finished()

Пример

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

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

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

false

Пример

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

use std::thread; fn main() { let handle = thread::spawn(|| { let x = 1 + 1; println!("{}", x); }); handle.join().unwrap(); let res = handle.is_finished(); println!("{}", res); }

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

2 true

Пример

Давайте проверим состояние потока в цикле, пока он не завершится:

use std::thread; use std::time::Duration; fn main() { let handle = thread::spawn(|| { thread::sleep(Duration::from_millis(50)); println!("Поток завершён"); }); while !handle.is_finished() { println!("Поток ещё работает"); thread::sleep(Duration::from_millis(20)); } handle.join().unwrap(); println!("{}", handle.is_finished()); }

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

Поток ещё работает Поток ещё работает Поток ещё работает Поток завершён true

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

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