РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
811 of 815 menu

Метод 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
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить