目前我使用Intels TBB来使用tbb :: parallel_for并行化一些工作。似乎线程的数量和它们启动的时间点在后台由TBB控制。查看用户指南和参考文档,我找不到有关是否有任何控制选项或模块的任何提示。 我希望能够修改线程数量,如果可能的话,决定何时创建线程池。
修改 为什么控制线程数很好:该程序旨在在我们的集群系统和我们的用户上运行。由于处理时间并不总是可以为一个用户提供,这是一个很好的功能
问题:你能解释为什么你需要更多地控制线程何时开始? 答:通过TBB进行多线程处理在许多地方使用,因为有些人担心“开销”,我的任务就是找出一种方法来启动线程一次。
答案 0 :(得分:0)
这可能有所帮助 - 我从未真正使用过TBB,但this answer似乎就是你所要求的。
“创建调度程序时,可以将线程数指定为
tbb::task_scheduler_init init(nthread);
否则你可以使用
tbb::task_scheduler_init init(tbb::task_scheduler_init::automatic);
在这种情况下,tbb调度程序会创建与CPU内核一样多的线程。“