在线程构建块(TBB)中,如果我在同一范围内初始化2个任务调度程序,则将忽略第二个初始化的参数,除非延迟第一个初始化的参数。为了避免任何冲突,我想知道我的程序中是否先前已初始化任务调度程序。有办法吗?如果是这样,那个论点是什么?
答案 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()
函数获取请求的线程数。但是,您无法获得上一个任务计划程序初始化期间使用的堆栈大小。