ライブラリーの初期化と終了#
oneAPI スレッディング・ビルディング・ブロック (oneTBB) は、タスク・スケジューラーを自動的に初期化します。初期化プロセスは、スレッドが並列アルゴリズム、フローグラフ、タスクグループなどのタスク・スケジュール・サービスを初めて使用するときに実行されます。最後のスレッドが終了したときに終了します。
明示的なライブラリーのファイナライズ#
oneTBB は、プレビュー機能として明示的なライブラリーの終了をサポートしています。oneapi::tbb::task_scheduler_handle クラスのインスタンスで呼び出される oneapi::tbb::finalize 関数は、ライブラリーによって暗黙的に作成されたすべてのワーカースレッドが完了するまで、呼び出しスレッドをブロックします。スレッドの完了待機が安全でない場合、例えばデッドロックが発生したり、タスク、並列アルゴリズム、フロー・グラフ・ノード内で呼び出されたりするとメソッドは失敗します。
プログラム内にアクティブな oneapi::tbb::task_scheduler_handle インスタンスがいくつ存在するか判明している場合、最後のインスタンスを除くすべてのインスタンスに対して oneapi::tbb::release 関数を呼び出し、最後のインスタンスには oneapi::tbb::finalize を呼び出すことをお勧めします。