c++ - 如何解决C++中的异步任务错误

标签 c++ multithreading c++14

在我的C++程序中,我创建了两个重载函数doSomething()和doSomething(int,int)。我的问题是,当我通过传递(异步,doSomething,a,b)参数来调用异步任务时,编译器会给出“调用异步没有匹配功能”错误。因此,伙计们如何在异步任务下传递两个arg doSomething(int,int)函数。
我的代码:

void doSomething(){ // do some work}
void doSomething(int &a, int &b){ // do some work}

int main(){

int a = 34, b = 44;
auto f = std::async(std::launch::async, doSomething, std::ref(a), std::ref(b));

}

最佳答案

问题在于类型推断为“doSomething”。如果不指定,则将其推导为“void()”,因此您应显式指定要使用的其他函数类型:

auto f = std::async<void(int&,int&)>(std::launch::async, doSomething, std::ref(a), std::ref(b));

关于c++ - 如何解决C++中的异步任务错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62512853/

相关文章:

c++ - decltype 和 is_same 给出令人困惑的结果

java - Redis 为什么需要分布式锁

java - 线程服务。如何在延迟后重新启动某些线程?

c++ - 声明为 consts 的函数 args 随定义变为非常量

c++ - 从智能指针获取原始指针

c++ - 如何更改 C++ 中的第 n 个模板参数?

c++ - 这看起来与旧问题相似但不同。给定一个大小为 n 的数组(允许重复的数字),找到缺失的 2 个数字

c++ - 无符号负原语?

c++ - 继承——实例化问题

javascript - 访问异步函数之外的变量时的JS安全性