Пространства имён
Варианты
Действия

std::future

Материал из cppreference.com
< cpp‎ | thread
 
 
Библиотека поддержки потоков
Потоки
Оригинал:
Threads
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
this_thread имен
Оригинал:
this_thread namespace
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Взаимное исключение
Оригинал:
Mutual exclusion
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Generic управления замком
Оригинал:
Generic lock management
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Условия переменных
Оригинал:
Condition variables
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Futures
Оригинал:
Futures
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
 
std::future
Получение результата
Оригинал:
Getting the result
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Государство
Оригинал:
State
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
 
Defined in header <future>
template< class T > class future;
(1) (начиная с C++11)
template< class T > class future<T&>;
(2) (начиная с C++11)
template<>          class future<void>;
(3) (начиная с C++11)

Шаблонный класс std::future обеспечивает механизм доступа к результатам асинхронных операций:

  • Асинхронные операции (созданные с помощью std::async, std::packaged_task, или std::promise) могут вернуть объект типа std::future создателю этой операции.
  • Создатель асинхронной операции может использовать различные методы запроса, ожидания или получения значения из std::future. Этим методы могут заблокировать выполнение до получения результата асинхронной операции.
  • Когда асинхронная операция готова к отправке результата её создателю, она может сделать это, изменив shared state (например, std::promise::set_value), которое связано с std::future создателя.

Обратите внимание, что std::future ссылки общим состоянием, которое не используется совместно с любым другим асинхронным возвращении объектов (в отличие от std::shared_future).

Содержание

[править] Функции-члены

строит будущий объект
Оригинал:
constructs the future object
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(public функция-член) [править]
разрушает будущий объект
Оригинал:
destructs the future object
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(public функция-член) [править]
перемещает будущий объект
Оригинал:
moves the future object
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(public функция-член) [править]
возвращает shared_future со ссылкой на результаты, связанные с *this
Оригинал:
returns a shared_future referring to the result associated to *this
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(public функция-член) [править]
Получение результата
возвращает результат
Оригинал:
returns the result
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(public функция-член) [править]
Состояние
проверяет, поделился ли future состоянием с promise
Оригинал:
checks if the future has shared state with a promise
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(public функция-член) [править]
ждет пока результат не станет доступным
Оригинал:
waits for the result to become available
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(public функция-член) [править]
waits for the result, returns if it is not available for the specified timeout duration
(public функция-член) [править]
ждет результата, возвращается, если она не доступна до указанного момента времени была достигнута
Оригинал:
waits for the result, returns if it is not available until specified time point has been reached
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(public функция-член) [править]

[править] Пример

#include <iostream>
#include <future>
#include <thread>
 
int main()
{
    // future from a packaged_task
    std::packaged_task<int()> task([](){ return 7; }); // wrap the function
    std::future<int> f1 = task.get_future();  // get a future
    std::thread(std::move(task)).detach(); // launch on a thread
 
    // future from an async()
    std::future<int> f2 = std::async(std::launch::async, [](){ return 8; });
 
    // future from a promise
    std::promise<int> p;
    std::future<int> f3 = p.get_future();
    std::thread( [](std::promise<int>& p){ p.set_value(9); },
                 std::ref(p) ).detach();
 
    std::cout << "Waiting...";
    f1.wait();
    f2.wait();
    f3.wait();
    std::cout << "Done!\nResults are: "
              << f1.get() << ' ' << f2.get() << ' ' << f3.get() << '\n';
}

Вывод:

Waiting...Done!
Results are: 7 8 9

[править] См. также

(C++11)
запускает функцию асинхронно (возможно, в новом потоке) и возвращает std::future, который будет содержать результат
Оригинал:
runs a function asynchronously (potentially in a new thread) and returns a std::future that will hold the result
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(шаблон функции) [править]
ждет значения (возможно, ссылаются другие фьючерсы), который устанавливается в асинхронном режиме
Оригинал:
waits for a value (possibly referenced by other futures) that is set asynchronously
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(шаблон класса) [править]