如何为返回async结果的函数指定函数签名?

时间:2015-12-28 20:13:01

标签: c++ c++11

我有一个执行此操作的功能:

??? createThread(int x) {
   return async(std::launch::async, 
      [x] () { // do stuff with x });
}

我正在使用VS 2012(部分C ++ 11)。返回类型应该如何进行编译?

1 个答案:

答案 0 :(得分:2)

您的函数返回std::future<void>:异步函数调用的未来结果。

但是,使用std::async政策回复std::launch::async来电后返回的未来是非常糟糕的做法,因为未来的析构函数可能会阻止,而标准库的用户通常会拒绝期望标准库析构函数阻塞。参看[futures.async] / 4:

  

[注意:如果从std::async获得的未来移到本地范围之外,则使用未来的其他代码必须知道未来的析构函数可能会阻止共享状态到准备好了。 - 结束记录]