2017-08-14 36 views
0

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

回答

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()函数获取请求的线程数。但是,您无法获取之前任务计划程序初始化期间使用的堆栈大小。

相关问题