为什么tbb::this_task_arena::max_concurrency()不能无限增加?

问题描述 投票:0回答:1

我的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()是如何控制的?

c++ macos parallel-processing cpu tbb
1个回答
0
投票
  • max_allowed_parallelism
    允许您限制工作线程的最大数量。

  • max_concurrency()
    返回调用线程当前使用的
    task_arena
    的并发级别。如果线程尚未初始化任务调度程序,返回根据硬件配置自动确定的并发级别

这表明您当前的硬件支持在任何时间点拥有 8 个active/running 线程,并且创建比硬件支持的数量更多的工作线程没有什么意义。

© www.soinside.com 2019 - 2024. All rights reserved.