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

Класс promise

Класс promise предоставляет механизм для сохранения значения или исключения, которое затем асинхронно извлекается через связанный объект future. Класс является шаблонным и принимает тип сохраняемого значения. Объект promise создается в одном потоке, а связанный с ним future может быть получен в другом потоке с помощью метода get_future. Значение устанавливается методом set_value, а исключение - методом set_exception.

Синтаксис

#include <future> std::promise<T> p; std::future<T> f = p.get_future();

Пример

Давайте создадим объект promise для типа int, получим связанный future и установим значение 42:

#include <iostream> #include <future> using namespace std; int main() { promise<int> p; future<int> f = p.get_future(); p.set_value(42); cout << f.get() << endl; return 0; }

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

42

Пример

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

#include <iostream> #include <future> #include <thread> using namespace std; void worker(promise<string> p) { p.set_value("abcde"); } int main() { promise<string> p; future<string> f = p.get_future(); thread t(worker, move(p)); t.join(); cout << f.get() << endl; return 0; }

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

"abcde"

Пример

Давайте установим исключение через promise и перехватим его при вызове метода get:

#include <iostream> #include <future> #include <stdexcept> using namespace std; int main() { promise<int> p; future<int> f = p.get_future(); p.set_exception(make_exception_ptr(runtime_error("error"))); try { cout << f.get() << endl; } catch (const exception& e) { cout << e.what() << endl; } return 0; }

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

"error"

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

  • класс future,
    который представляет асинхронный результат
  • метод set_value,
    который устанавливает значение в promise
  • метод set_exception,
    который устанавливает исключение в promise
  • метод get_future,
    который возвращает связанный future
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить