在TBB中,有没有办法找出是否存在现有的任务调度程序?

时间:2017-08-14 17:42:33

标签: initialization scheduled-tasks intel tbb

在线程构建块(TBB)中,如果我在同一范围内初始化2个任务调度程序,则将忽略第二个初始化的参数,除非延迟第一个初始化的参数。为了避免任何冲突,我想知道我的程序中是否先前已初始化任务调度程序。有办法吗?如果是这样,那个论点是什么?

1 个答案:

答案 0 :(得分:2)

您可能需要考虑tbb::this_task_arena::current_thread_index()tbb::this_task_arena::max_concurrency()功能。

如果线程尚未初始化任务调度程序,tbb::this_task_arena::current_thread_index()函数将返回“tbb::task_arena::not_initialized。” (documentation link)。

如果任务调度程序已初始化,您可以使用tbb::this_task_arena::max_concurrency()函数获取请求的线程数。但是,您无法获得上一个任务计划程序初始化期间使用的堆栈大小。