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

Метод unpark

Метод unpark класса Thread пробуждает поток, который был приостановлен с помощью функции park или park_timeout. Параметром метод принимает ссылку на поток, который нужно разбудить. Метод не возвращает значения. Если поток ещё не был приостановлен, то вызов unpark устанавливает специальный маркер, благодаря которому последующий вызов park вернётся немедленно, не блокируя поток.

Синтаксис

thread.unpark()

Пример

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

use std::thread; use std::time::Duration; fn main() { let handle = thread::spawn(|| { println!("before park"); thread::park(); println!("after park"); }); thread::sleep(Duration::from_millis(100)); println!("unparking"); handle.thread().unpark(); handle.join().unwrap(); }

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

before park unparking after park

Пример

Давайте разбудим поток до того, как он вызовет park. В этом случае маркер будет установлен, и park вернётся немедленно:

use std::thread; use std::time::Duration; fn main() { let handle = thread::spawn(|| { thread::sleep(Duration::from_millis(200)); println!("before park"); thread::park(); println!("after park"); }); handle.thread().unpark(); println!("unparked early"); handle.join().unwrap(); }

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

unparked early before park after park

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

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