gpt4 book ai didi

c++ - 错误 : no match for call when calling a function by a thread

转载 作者:行者123 更新时间:2023-11-28 01:27:40 25 4
gpt4 key购买 nike

我正在尝试使用 C++ 进行生产者/消费者设计,但实际上我被卡住了。我收到这个错误

error: no match for call to

‘(std::thread) (void (&)())’ prods[i]>(producer,i);

当我从循环中调用生产者函数时这是我的主要内容:

 int main(int argc, char* argv[])
{

std::thread prods[argv[1]];
for (int i = 0; i <= argc;i++){
prods[i](producer,i);
}

return 0;
}

这里是我的生产者函数

  void producer(int i){
std::unique_lock<std::mutex> lock(m);
std::cout << "(1) produit 20";
jobs.push(20);
notified = true;
cond_var.notify_one();
done = true;

}

有人知道如何解决这个问题吗?提前致谢。

最佳答案

线程不可调用,需要显式调用线程构造函数来创建线程:

int main(int argc, char* argv[])
{
const size_t n = 4;
std::vector< std::thread > prods( n );
for (int i = 0; i <= n;i++)
{
prods[i] = std::thread(producer,i);
}
return 0;
}

我还用 std::vector 替换了非标准的可变长度数组,并对线程数进行了硬编码,因为您对命令行参数的处理也不正确。

关于c++ - 错误 : no match for call when calling a function by a thread,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53086680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com