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

Метод wait

Метод wait класса future блокирует текущий поток выполнения до момента, когда асинхронная операция, связанная с данным объектом future, завершится. Метод не принимает параметров и не возвращает значения. После завершения работы метода wait общий состояние становится готовым, и результат можно получить с помощью метода get. Если объект future не связан с общим состоянием, поведение не определено.

Синтаксис

future.wait()

Пример

Давайте создадим асинхронную задачу с помощью std::async и дождёмся её завершения с помощью метода wait:

#include <iostream> #include <future> using namespace std; int main() { future<int> fut = async([]() { return 42; }); fut.wait(); cout << "Task completed" << endl; int res = fut.get(); cout << res << endl; return 0; }

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

"Task completed" 42

Пример

Давайте создадим promise и future, передадим значение из другого потока и дождёмся его с помощью метода wait:

#include <iostream> #include <future> #include <thread> using namespace std; int main() { promise<int> prom; future<int> fut = prom.get_future(); thread th([&prom]() { prom.set_value(123); }); fut.wait(); cout << "Value is ready" << endl; int res = fut.get(); cout << res << endl; th.join(); return 0; }

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

"Value is ready" 123

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

  • класс future,
    который представляет результат асинхронной операции
  • метод get,
    который возвращает результат из future
  • метод wait_for,
    который ожидает результат с таймаутом
  • метод valid,
    который проверяет, связан ли future с общим состоянием
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить