我有一个执行此操作的功能:
??? createThread(int x) {
return async(std::launch::async,
[x] () { // do stuff with x });
}
我正在使用VS 2012(部分C ++ 11)。返回类型应该如何进行编译?
答案 0 :(得分:2)
您的函数返回std::future<void>
:异步函数调用的未来结果。
但是,使用std::async
政策回复std::launch::async
来电后返回的未来是非常糟糕的做法,因为未来的析构函数可能会阻止,而标准库的用户通常会拒绝期望标准库析构函数阻塞。参看[futures.async] / 4:
[注意:如果从
std::async
获得的未来移到本地范围之外,则使用未来的其他代码必须知道未来的析构函数可能会阻止共享状态到准备好了。 - 结束记录]