현재 코어 수와 동일한 스레드 수의 부스트 스레드 풀을 사용하고 있습니다. 스케줄을 잡았습니다. 풀의 일정 기능을 사용하는 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