使用函数列表在 C++ 中调用异步

Using list of functions to call async in C++

我有一堆静态函数,我在异步调用中使用它们并将字符串 x 传递给函数。

 std::future<void> f1 = std::async(std::launch::async, f001, x);
 std::future<void> f2 = std::async(std::launch::async, f002, x);
 std::future<void> f3 = std::async(std::launch::async, f003, x);

然后分别调用 get。

 f1.get(); f2.get(); f3.get();

如果我们考虑到我有十个功能并且对我来说做同样的事情看起来很重复。

我尝试创建函数指针列表并调用上面的函数,如下所示。

 std::vector<void (*) (std::string)> funs;
 funs.push_back(foo1);
 funs.push_back(foo2);
 funs.push_back(foo3);

 std::vector<std::future<void>> tasks
 for(auto& t : temp ){
    task.push_back(std::async(std::launch::async, t, x);)
 }
 for(auto task : tasks){
    task.get();
 }

但它给我错误,如删除功能和类似的。

有没有更好的方法。

谢谢

您必须参考任务:

 for(auto& task : tasks){
    task.get();
 }

您应该在错误消息中看到与 future(const future&) = delete; 相关的内容。