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

In TBB, is there a way to find out if there is an existing task scheduler?

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

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

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

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