Initializing and Terminating the Library#
oneAPI Threading Building Blocks (oneTBB) automatically initializes the task scheduler. The initialization process is involved when a thread uses task scheduling services the first time, for example any parallel algorithm, flow graph or task group. The termination happens when the last such thread exits.
Explicit Library Finalization#
oneTBB supports an explicit library termination as a preview feature.
The oneapi::tbb::finalize
function called with an instance of class oneapi::tbb::task_scheduler_handle
blocks the calling thread
until all worker threads implicitly created by the library have completed.
If waiting for thread completion is not safe, e.g. may result in a deadlock
or called inside a task, a parallel algorithm, or a flow graph node, the method fails.
If you know how many active oneapi::tbb::task_scheduler_handle
instances exist in the program,
it is recommended to call oneapi::tbb::release
function on all but the last one, then call oneapi::tbb::finalize
for the last instance.