我的MacOS系统是2 GHz 4 Intel Core i5,当我设置
tbb::global_control gc(tbb::global_control::max_allowed_parallelism, 10)
时,我只能得到tbb::this_task_arena::max_concurrency()
返回的8,而当我增加max_allowed_parallelism
时,最大并发数始终返回8并且无法增加。
tbb内部max_concurrency()是如何控制的?
max_allowed_parallelism
允许您限制工作线程的最大数量。
max_concurrency()
返回调用线程当前使用的 task_arena
的并发级别。如果线程尚未初始化任务调度程序,返回根据硬件配置自动确定的并发级别。
这表明您当前的硬件支持在任何时间点拥有 8 个active/running 线程,并且创建比硬件支持的数量更多的工作线程没有什么意义。