我目前使用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