【发布时间】:2014-08-21 15:57:08
【问题描述】:
我想在一组块上并行执行一个 for 循环(使用 TBB),其中每个块都将使用用户提供的函数进行处理。通常,我会使用tbb::parallel_for() 来执行此操作。由于各种原因,我希望能够将处理块的线程数限制为规定的数量,称之为j。通常,我会使用tbb::task_scheduler_init(j) 来执行此操作。
但是,我希望用户可以选择使用 TBB,具体来说,让用户提供的功能使用但仍然有许多内核。所以我认为tbb::task_scheduler_init() 已经出局了。我能看到的唯一解决方案是让用户调用tbb::task_scheduler_init()(或将其全部忽略),然后在正常的for循环中自己旋转tbb::tbb_thread的j实例。我错过了什么吗?在 TBB 中是否有更自然的方法来做到这一点? tbb::task_scheduler_init() 是否有某种分层版本?
【问题讨论】:
-
我将标题更改为:TBB,一个任务的线程数固定,其他任务默认
-
听起来很合理。完毕。虽然,我猜在我的情况下,“其他”是第一个任务的子任务(并行 for 循环)。
标签: c++ multithreading tbb