こんにちは、プログラムに少し問題があります (配列をスカラーで乗算したい)。
基本的に、乗算スタッフ(要素ごと)を実行するスレッドのベクトルを作成したい
コードサンプル
最初の mainImplementation 関数
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)));
}
}
}
}
スカラー乗算を実装する now 関数
void scalarMultiplication(vector< vector<int> >& vtab, vector< vector<int> >& vresult, vector<int>& vtemp, int& i, int& j, int& scalar){
//...implementation
}
この部分はまだ実装していませんが、1 つの問題を解決できません
ラインで
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つの変数を渡すので、問題ないはずですが、そうではなく、ここで何をすべきかわかりません...同様の問題を検索したため、Googleも私を助けることができません。
助けてくれてありがとう。