Метод 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