В настоящее время я написал программу на C ++, которая иногда использует более 300 потоков. В моей программе есть массив структур, длина которого равна количеству потоков. Предположим, у меня 400 структур и, следовательно, 400 потоков.
В одной итерации цикла for я применяю функцию к каждой из 400 структур, и эта функция выполняется в потоке. Следовательно, у меня одновременно работает 400 потоков. В настоящее время мы написали программу на C ++, которая иногда использует более 300 потоков. В моей программе есть массив структур, длина которого равна количеству потоков. Предположим, что я ...
В настоящее время я написал программу на C ++, которая иногда использует более 300 потоков. В моей программе есть массив структур, длина которого равна количеству потоков. Предположим, у меня 400 структур и, следовательно, 400 потоков.
В одной итерации цикла for я применяю функцию к каждой из 400 структур, и эта функция выполняется в потоке. Следовательно, у меня одновременно работает 400 потоков. В настоящее время мы написали программу на C ++, которая иногда использует более 300 потоков. В моей программе есть массив структур, длина которого равна количеству потоков. Предположим, что я ...
В настоящее время я написал программу на C ++, которая иногда использует более 300 потоков. В моей программе есть массив структур, длина которого равна количеству потоков. Предположим, у меня 400 структур и, следовательно, 400 потоков.
В одной итерации цикла for я применяю функцию к каждой из 400 структур, и эта функция выполняется в потоке. Следовательно, у меня одновременно работает 400 потоков. В настоящее время мы написали программу на C ++, которая иногда использует более 300 потоков. В моей программе есть массив структур, длина которого равна количеству потоков. Предположим, у меня 400 структур и, следовательно, 400 потоков.
В одной итерации цикла for я применяю функцию к каждой из 400 структур, и эта функция выполняется в потоке. Следовательно, у меня одновременно работает 400 потоков. В настоящее время мы написали программу на C ++, которая иногда использует более 300 потоков. В моей программе есть массив структур, длина которого равна количеству потоков. Предположим, у меня 400 структур и, следовательно, 400 потоков.
В одной итерации цикла for я применяю функцию к каждой из 400 структур, и эта функция выполняется в потоке. Следовательно, у меня одновременно работает 400 потоков. (Я использую библиотеку потоков Boost.)
Я попытался дать разбивку того, как выглядит мой код (это не настоящий код):
struct my_struct{
// Structure's members
};
std::vector<my_struct> my_vec;
void my_fun(my_struct* my_str){
// Operations on my_str
}
int main(){
std::vector<boost::thread> thr(400);
for (int k = 0; k < 300; k++){
for (int i = 0; i < 400; i++){
thr.at(i) = boost::thread(my_fun, &my_vec.at(i));
}
}
for (int m = 0; m < M; m++){
thr.at(m).join();
}
}
}
Функция, которую я использую, требует больших вычислительных ресурсов и от В приведенном выше коде я использую 400 потоков для вычислений, и это делается 300 раз. Есть ли более эффективный способ выполнить эту задачу? Я не уверен, что одновременное выполнение такого большого количества потоков может повлиять на производительность. Я слышал о библиотеке threadpool, но не уверен, принесет ли она мне пользу. Любая помощь приветствуется.
Большое спасибо.