У меня есть функция, которую нужно вызывать с разным количеством потоков каждый раз (я делаю некоторые вычисления производительности, поэтому нужно знать, когда производительность начинает ухудшаться). Пример приведен ниже:
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: значение, указанное в командной строке
Мой вопрос заключается в том, даст ли это желаемый результат, так как будет ли вызываться функция getTime с nThreads каждый раз, когда программа обращается к циклу for? Или мне нужен какой-то другой метод, чтобы узнать то же самое?
что я действительно хочу сделать, это:
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 потока для завершения и т. д.