我有一个函数,每次都需要用不同数量的线程调用(我正在做一些性能计算,所以需要知道性能何时开始恶化)。示例如下:
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。但这与我的问题无关。
我希望每次调用具有不同线程数的函数并计算每个线程完成的时间。1 个线程所花费的总时间是多少,2 个线程完成所花费的总时间是多少,等等。