C++11promise和future介绍

Posted 林多

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++11promise和future介绍相关的知识,希望对你有一定的参考价值。

【C++11】promise和future介绍

  • C++11提供了std::promise和std::future两个模板类,通过这两个模板类可以实现异步存储值并获取值的功能。

std::promise

The class template std::promise provides a facility to store a value or an exception that is later acquired asynchronously via a std::future object created by the std::promise object. Note that the std::promise object is meant to be used only once.

  • 模板类定义
emplate< class R > class promise;
template< class R > class promise<R&>;
template<>          class promise<void>;
  • 成员函数
函数说明
构造函数-
析构函数-
operator=-
swap交换两个promise对象
get_future绑定并返回一个future对象
set_value设置值
set_value_at_thread_exit在线程退出时设置值
set_exception设置异常
set_exception_at_thread_exit在线程退出时设置异常

std::future

The class template std::future provides a mechanism to access the result of asynchronous operations

  • std::future可以被 std::async,std::packaged_task,std::promise创建,并用于异步获得 std::async,std::packaged_task,std::promise等对象设置的值或异常。
  • 模板类定义
template< class T > class future;
template< class T > class future<T&>;
template<>          class future<void>;
  • 成员函数
函数说明
构造函数-
析构函数-
operator=-
get获取结果
validchecks if the future has a shared state
wait等待结果可用
wait_for等待结果可用(指定等待时间)
wait_until等待结果可用(指定等待时刻)

示例


#include <iostream>
#include <thread>
#include <future>
#include <string>

int main()

    std::promise<std::string> p;
    std::future<std::string> f = p.get_future();
 
    std::thread t([&p]
      p.set_value("lindduo");
    );
 
	std::string ret = f.get();
	std::cout << ret << std::endl;
    t.join();
    return 0;

以上是关于C++11promise和future介绍的主要内容,如果未能解决你的问题,请参考以下文章

C++11promise和future介绍

c++11 future promise

c++11_14学习之future async promise

[C++11 多线程异步] --- std::promise/std::future

[C++11 多线程异步] --- std::promise/std::future

[C++11 多线程异步] --- std::promise/std::future