c++ 异步(下) future头文件

future

  • std::future 类型模板是为了等待其他线程上的异步结果,其和 std::promise,std::packaged_task类型模板,还有std::async函数模板,都是为异步结果准备的工具。std::shared_future实例可以引用同一个异步结果。
  • std::packaged_task 类型模板可打包一个函数或其他可调用对象,所以当函数通过 std::packaged_task实例被调用时,结果将会作为异步结果。这个结果可以通过检索 std::future 实例来查找。
  • std::promise 类型模板提供设置异步结果的方法,这样其他线程就可以通过 std::future 实例来索引该结果。

例子

promise

函数的返回值被保存在promise变量里面,需要的时候可以拿出来用。

std::promise pr;
std::thread t([](std::promise &pr){
     pr.set_value_at_thread_exit(11);
},std::ref(pr));
auto fut = pr.get_future();
std::cout<
packaged_task

将函数保存在packaged_task里面,函数的返回结果可以在需要的时候取出来用.

std::packaged_task task([](){return 2;});
std::thread t1(std::ref(task));
std::cout<

最终都是转化成std::future变量,从此中取出函数运行的结果。

你可能感兴趣的:(c++ 异步(下) future头文件)