gpt4 book ai didi

c++ - std::thread 构造函数(变量数量)

转载 作者:行者123 更新时间:2023-11-28 03:05:46 26 4
gpt4 key购买 nike

你好,我的程序有点问题(我想将数组乘以标量)。

基本上我想创建一个线程 vector 来执行乘法运算(逐个元素)

代码示例

第一个main实现函数

void mainImplementation(){

vector<thread> threads;
vector< vector<int> > result;
vector< vector<int> > tab;
vector<int> temp;
int row = 0;
int col = 0;
int scalar = 5;

loadDataFromFile(tab,temp,row,col);

int availableThreads = thread::hardware_concurrency();


for(int i = 0; i < row; i++){

for(int j = 0; j < col; j++){

for(int t = 1; i <= availableThreads; t++){

threads.push_back(thread(scalarMultiplication,std::ref(tab),
std::ref(result),std::ref(temp),std::ref(i),std::ref(j),std::ref(scalar)));
}

}
}

现在实现标量乘法的函数

void scalarMultiplication(vector< vector<int> >& vtab, vector< vector<int> >& vresult, vector<int>& vtemp, int& i, int& j, int& scalar){

//...implementation

我还没有实现这部分,但我无法解决一个问题

行内

threads.push_back(thread(scalarMultiplication,std::ref(tab),
std::ref(result),std::ref(temp),std::ref(i),std::ref(j),std::ref(scalar)));

编译器说那里有问题

“错误:构造函数 std::thread::thread 的实例不匹配参数列表”。

我似乎无法解决这个问题。我确实读过我应该通过引用将变量传递给线程构造函数中的函数,所以我认为这不是问题。我将 6 个变量传递给乘法函数,所以它应该没问题,但事实并非如此,我不知道在这里做什么......谷歌也帮不了我,因为我搜索了类似的问题。

在此先感谢您的帮助。

最佳答案

正如我所想,Visual Studio Ultimate 2012 没有可变参数模板。默认是 5 所以你需要添加一个 #define 来增加限制(最大值是 10):

#define _VARIADIC_MAX 10

关于c++ - std::thread 构造函数(变量数量),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19788743/

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