Класс future
Класс future представляет собой объект, который позволяет получить результат асинхронной операции. Он предоставляет механизм для ожидания завершения задачи и получения её результата. Объект future обычно создается с помощью функций async, promise или packaged_task. Класс не предназначен для копирования, но поддерживает перемещение. Основные методы позволяют проверить валидность состояния, дождаться результата и извлечь его.
Синтаксис
#include <future>
std::future<T> future_name;
Пример
Давайте создадим асинхронную задачу, которая возвращает число 42, и получим результат с помощью метода get:
#include <iostream>
#include <future>
using namespace std;
int main()
{
future<int> fut = async(launch::async, [] {
return 42;
});
int res = fut.get();
cout << res << endl;
return 0;
}
Результат выполнения кода:
42
Пример
Давайте проверим валидность объекта future до и после вызова метода get:
#include <iostream>
#include <future>
using namespace std;
int main()
{
future<int> fut = async(launch::async, [] {
return 123;
});
cout << boolalpha << fut.valid() << endl;
int res = fut.get();
cout << res << endl;
cout << boolalpha << fut.valid() << endl;
return 0;
}
Результат выполнения кода:
true
123
false