Метод get_future
Метод get_future класса promise возвращает объект future, который связан с данным promise. Через этот future можно в дальнейшем получить значение или исключение, установленное в promise с помощью методов set_value или set_exception. Метод не принимает параметров. Вызывать get_future можно только один раз для одного объекта promise - повторный вызов приведет к исключению std::future_error.
Синтаксис
promise.get_future()
Пример
Давайте создадим promise и получим из него future, а затем передадим значение из одного потока в другой:
#include <iostream>
#include <future>
#include <thread>
using namespace std;
int main()
{
promise<int> prom;
future<int> fut = prom.get_future();
thread t([&prom]() {
prom.set_value(42);
});
cout << fut.get() << endl;
t.join();
return 0;
}
Результат выполнения кода:
42
Пример
Давайте передадим через promise строковое значение и получим его в главном потоке:
#include <iostream>
#include <future>
#include <thread>
#include <string>
using namespace std;
int main()
{
promise<string> prom;
future<string> fut = prom.get_future();
thread t([&prom]() {
prom.set_value("abcde");
});
cout << fut.get() << endl;
t.join();
return 0;
}
Результат выполнения кода:
"abcde"