我目前使用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个任务。我怎样才能做到这一点?
我希望这很清楚。谢谢!
也许http://stackoverflow.com/questions/3344028/how-to-make-boostthread-group-execute-a-fixed-number-of-parallel-threads会有帮助吗? – sarnold 2011-05-13 05:36:12