在boost::thread
庫中,是否有任何機制來控制同時運行多少個線程(最多)?boost :: thread:如何啓動所有線程,但一次只能運行n個?
在我而言,這將是最方便的開始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];
}
但我想推動一個最大的透明設置比如說,一次運行4個線程。 (我共享一個8核心機器,所以我不應該一次運行超過4個)。
當然,我可以照顧每次只能啓動4個,但是解決方案我問的問題會更透明,最方便。