В настоящее время я использую пул потоков Boost с количеством потоков, равным количеству ядер. Я запланировал, скажем, 10 задач, используя функцию расписания пула. Например,
предположим, у меня есть функция
void my_fun(std::vector<double>* my_vec){
// Do something here
}
Аргумент 'my_vec' здесь просто используется для выполнения некоторых временных вычислений. Основная причина, по которой я передал ей функцию, заключается в том, что я хотел бы повторно использовать этот вектор при повторном вызове функции.
В настоящее время у меня есть следующее
// Create a vector of 10 vectors called my_vecs
// Create threadpool
boost::threadpool::pool tp(num_threads);
// Schedule tasks
for (int m = 0; m < 10; m++){
tp.schedule(boost::bind(my_fun, my_vecs.at(m)));
}
Это моя проблема: я хотел бы заменить вектор из 10 векторов только на 2 вектора. Если я хочу запланировать 10 задач и у меня есть 2 ядра, в любое время будет работать максимум 2 потока (задачи). Поэтому я хочу использовать только два вектора (по одному назначен каждому потоку) и использовать его для выполнения моих 10 задач. Как я могу это сделать?
Надеюсь, это понятно. Спасибо!