毎回異なる数のスレッドで呼び出す必要がある関数があります (パフォーマンスの計算を行っているため、パフォーマンスがいつ低下し始めるかを知る必要があります)。以下に例を示します。
getTime() {
return 0;
}
int main() {
boost::threadpool::thread_pool<> threads(nThreads);
for(int j = 0; j <= nLines; j++){
threads.schedule(boost::bind(&getTime, nThreads, 1));
}
threads.wait();
}
ここで、nThreads: コマンド ラインで指定された値
私の質問は、プログラムが for ループにアクセスするたびに「nThreads」を使用して「getTime」関数を呼び出すので、これは望ましい結果をもたらすでしょうか? または、同じことを見つけるために他の方法が必要ですか?
私が本当にやりたいことはこれです:
boost::threadpool::thread_pool<> threads(nThreads);
// start a new thread that calls the "getTime" function
for(int j = 0; j <= nLines; j++){
//threads.schedule(boost::bind(&getTime, nThreads, 1));
threads.schedule(boost::bind(&getTime, 0, nLines, pc));
}
(上記のどれが正しいかはわかりません。)
getTime() 関数は、指定された行数で実行されます。これをテキスト ファイルから取得し、各行を API に渡します。API のパフォーマンスを計算します。しかし、これは私が持っている質問とは関係ありません。
毎回異なる数のスレッドで関数を呼び出し、各スレッドが完了するまでにかかった時間を計算したいと考えています。1 つのスレッドでかかった合計時間、2 つのスレッドが終了するのにかかった合計時間など。