Программисты больше не нужны!
Нужны ИИ инженеры! Хотите научиться? Вступайте в канал!
815 of 824 menu
◀ ▶

Метод get

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

Синтаксис

fut.get()

Пример

Давайте запустим асинхронную задачу, которая возвращает число 42, и получим её результат с помощью метода get:

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

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

42

Пример

Давайте запустим асинхронную задачу, которая возвращает строку "abcde", и получим её результат:

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

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

"abcde"

Пример

Давайте рассмотрим, как метод get повторно выбрасывает исключение, возникшее в асинхронной задаче:

#include <iostream> #include <future> #include <stdexcept> using namespace std; int main() { future<int> fut = async([]() { throw runtime_error("error"); return 0; }); try { int res = fut.get(); cout << res << endl; } catch (const exception& e) { cout << e.what() << endl; } return 0; }

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

"error"

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

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