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