假设我有一个返回的函数std::vector
,并且我想异步调用它。
std::vector<int> foo(int n);
int main() {
auto future_vector = std::async(foo, 999);
// ... other stuff
// Questions are all about this:
auto actual_vector = future_vector.get();
// ... do stuff with actual_vector ...
}
Q1:是actual_vector
从共享状态复制构造还是移动构造?我需要std::move(future_vector.get())
明确写出来吗?
Q2:假设函数已完成并且不再履行承诺:共享状态的生存期是否在get
未来被调用时结束,还是会持续到未来到达其生存期的结束?