В библиотеке boost::thread
есть ли какой-либо механизм для управления количеством потоков (максимум), запущенных одновременно?
В моем случае было бы наиболее удобно запускать все потоки N
одновременно (N может быть сотнями или несколькими тысячами):
std::vector<boost::thread*> vec;
for (int i = 0; i < N; ++i) {
vec.push_back(new boost::thread(my_fct));
}
// all are running, now wait for them to finish:
for (int i = 0; i < N; ++i) {
vec[i]->join();
delete vec[i];
}
Но я хочу, чтобы Boost прозрачно установил максимум, скажем, 4 потока, работающих одновременно. (У меня 8-ядерный компьютер, поэтому я не должен запускать более 4-х одновременно).
Конечно, я мог бы позаботиться о запуске только 4 одновременно, но решение, о котором я спрашиваю, было бы более прозрачным и наиболее удобным.