使用函数列表在C ++中调用async

时间:2015-07-17 16:09:44

标签: c++ c++11 future

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

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

然后在每个上面调用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();
 }

如果我们认为我有十个功能,那么看起来重复我。

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

80

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

有更好的方法吗?

谢谢

1 个答案:

答案 0 :(得分:2)

您必须通过引用来完成任务:

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

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