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

Метод valid

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

Синтаксис

fut.valid()

Пример

Давайте создадим объект future по умолчанию и проверим его валидность с помощью метода valid:

#include <iostream> #include <future> using namespace std; int main() { future<int> fut; cout << boolalpha << fut.valid() << endl; return 0; }

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

false

Пример

Давайте создадим асинхронную задачу с помощью async и проверим валидность полученного объекта future:

#include <iostream> #include <future> using namespace std; int main() { future<int> fut = async(launch::async, []() { return 42; }); cout << boolalpha << fut.valid() << endl; return 0; }

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

true

Пример

Давайте получим результат через метод get и проверим, что после этого объект future становится невалидным:

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

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

42 false

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

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