我很好奇如果 astd::future被实例化并用于分配给一个std::async()操作的值,然后等待 完成.wait(),它可以重新分配给一个新async()操作吗?
以这个小代码片段为例:
int fib(int n)
{
if (n < 3) return 1;
else return fib(n-1) + fib(n-2);
}
int main()
{
std::future<int> f1 = std::async(std::launch::async, [](){
return fib(40);
});
f1.wait();
std::cout << "f1 first operation: " << f1.get() << '\n';
f1 = std::async(std::launch::async, [](){
return fib(43);
});
std::cout << "f1 second operation: " << f1.get() << '\n';
}
Run Code Online (Sandbox Code Playgroud)
期货一旦使用过一次,是否可以简单地重新分配?
到目前为止,我还没有找到太多关于这方面的阅读材料,并且我很感兴趣这是否会为未来创造任何未定义的行为。
感谢任何信息并感谢您的帮助!