【发布时间】:2023-03-12 00:35:01
【问题描述】:
我目前正在使用线程数等于内核数的 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)));
}
这是我的问题:我想用只有 2 个向量替换 10 个向量的向量。如果我想调度 10 个任务并且我有 2 个内核,那么任何时候最多有 2 个线程(任务)在运行。所以我只想使用两个向量(一个分配给每个线程)并用它来执行我的 10 个任务。我该怎么做?
我希望这很清楚。谢谢!
【问题讨论】:
标签: c++ multithreading threadpool