0

こんにちは、プログラムに少し問題があります (配列をスカラーで乗算したい)。

基本的に、乗算スタッフ(要素ごと)を実行するスレッドのベクトルを作成したい

コードサンプル

最初の 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も私を助けることができません。

助けてくれてありがとう。

4

1 に答える 1