小编Emb*_*OOD的帖子

一旦 std::future 已经被分配给 std::async() ,你可以重用它吗?

我很好奇如果 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)

期货一旦使用过一次,是否可以简单地重新分配?

到目前为止,我还没有找到太多关于这方面的阅读材料,并且我很感兴趣这是否会为未来创造任何未定义的行为。

感谢任何信息并感谢您的帮助!

c++ asynchronous future std

5
推荐指数
1
解决办法
603
查看次数

标签 统计

asynchronous ×1

c++ ×1

future ×1

std ×1