名前空間

このセクションでは、ライブラリーの名前空間の規則について説明します。

tbb 名前空間

tbb 名前空間には、プログラムで参照できる、ライブラリーにより定義されるパブリック識別子が含まれます。

tbb::flow 名前空間

tbb::flow 名前空間には、プログラムで参照できる、ライブラリーにより定義されるパブリック識別子が含まれます。

フローグラフのコミュニティー・プレビュー機能と関連しています。詳細は、「フローグラフ」を参照してください。

tbb::interfacex 名前空間

tbb::interfacex 形式の名前空間は、ライブラリーが tbb 名前空間に追加するパブリック識別子を定義します。 数値 x は、互換性のない定義が誤ってリンクされるのを防ぐために提供される内部バージョン番号に相当します。 ユーザーコードで tbb::interfacex 名前空間を直接参照しないでください。 代わりに、tbb 名前空間を使用して名前を参照します。

例えば、ヘッダー tbb/concurrent_hash_map.hconcurrent_hashmap<Key,T> テンプレートを tbb::version4::concurrent_hashmap<Key,T> として定義し、using 宣言子を使用して tbb 名前空間に追加します。 この場合、ユーザーコードで tbb::concurrent_hashmap<Key,T> として参照してください。

tbb::internal 名前空間

tbb::internal 名前空間は、tbb::interfacex に似た役割を果たします。 この名前空間は、ライブラリーの以前のバージョンとの後方互換性のために残されています。 ユーザーコードで tbb::internal 名前空間を直接参照しないでください。 ヘッダーファイルで提供される public typedef 経由での間接参照は可能です。

tbb::deprecated 名前空間

ライブラリーは、tbb 名前空間のデフォルトの意味が異なる古い識別子に tbb::deprecated 名前空間を使用します。 TBB_DEPRECATED=1 でコンパイルすると、tbb 名前空間の相当する古い識別子に置換されます。

例えば、tbb::concurrent_queue は、インテル® スレッディング・ビルディング・ブロック (インテル® TBB) 2.2 で tbb::concurrent_queuetbb::concurrent_bounded_queue に分割され、いくつかのメソッドの名前が変更されました。 レガシーコードのために、古いインテル® TBB 2.1 の機能は、TBB_DEPRECATED=1 でコンパイルしたときに tbb 名前空間に追加される tbb::deprecated::concurrent_queue に残されています。

tbb::strict_ppl 名前空間

ライブラリーは、tbb/compat/ppl.h がインクルードされている場合、Concurrency 名前空間に追加する識別子に tbb::strict_ppl 名前空間を使用します。

std 名前空間

ライブラリーは、std 名前空間にいくつかの C++ の機能を実装します。 ライブラリー・バージョンは、次の表の対応するヘッダーにインクルードすることにより使用できます。

インテル® TBB によりオプションで定義される C++11 機能

ヘッダー

std:: に追加される識別子

セクション

tbb/compat/condition_variable

defer_lock_t

try_to_lock_t

adopt_lock_t

defer_lock

try_to_lock

adopt_lock

lock_guard

unique_lock

swap

condition_variable

cv_status

timeout

no_timeout

C++11 の同期

tbb/compat/thread

thread

this_thread

thread クラス

これらの C++ ライブラリー機能のほかの実装と誤ってリンクすることを防ぐために、ライブラリーはほかの名前空間に識別子を定義して、std:: 名前空間に追加します。   この方法では、リンカーに渡される「マングルネーム (エンコードされた名前)」は、ほかの実装で生成される「マングルネーム」と異なります。