このセクションでは、ライブラリーの名前空間の規則について説明します。
tbb 名前空間には、プログラムで参照できる、ライブラリーにより定義されるパブリック識別子が含まれます。
tbb::flow 名前空間には、プログラムで参照できる、ライブラリーにより定義されるパブリック識別子が含まれます。
フローグラフのコミュニティー・プレビュー機能と関連しています。詳細は、「フローグラフ」を参照してください。
tbb::interfacex 形式の名前空間は、ライブラリーが tbb 名前空間に追加するパブリック識別子を定義します。 数値 x は、互換性のない定義が誤ってリンクされるのを防ぐために提供される内部バージョン番号に相当します。 ユーザーコードで tbb::interfacex 名前空間を直接参照しないでください。 代わりに、tbb 名前空間を使用して名前を参照します。
例えば、ヘッダー tbb/concurrent_hash_map.h は concurrent_hashmap<Key,T> テンプレートを tbb::version4::concurrent_hashmap<Key,T> として定義し、using 宣言子を使用して tbb 名前空間に追加します。 この場合、ユーザーコードで tbb::concurrent_hashmap<Key,T> として参照してください。
tbb::internal 名前空間は、tbb::interfacex に似た役割を果たします。 この名前空間は、ライブラリーの以前のバージョンとの後方互換性のために残されています。 ユーザーコードで tbb::internal 名前空間を直接参照しないでください。 ヘッダーファイルで提供される public typedef 経由での間接参照は可能です。
ライブラリーは、tbb 名前空間のデフォルトの意味が異なる古い識別子に tbb::deprecated 名前空間を使用します。 TBB_DEPRECATED=1 でコンパイルすると、tbb 名前空間の相当する古い識別子に置換されます。
例えば、tbb::concurrent_queue は、インテル® スレッディング・ビルディング・ブロック (インテル® TBB) 2.2 で tbb::concurrent_queue と tbb::concurrent_bounded_queue に分割され、いくつかのメソッドの名前が変更されました。 レガシーコードのために、古いインテル® TBB 2.1 の機能は、TBB_DEPRECATED=1 でコンパイルしたときに tbb 名前空間に追加される tbb::deprecated::concurrent_queue に残されています。
ライブラリーは、tbb/compat/ppl.h がインクルードされている場合、Concurrency 名前空間に追加する識別子に tbb::strict_ppl 名前空間を使用します。
ライブラリーは、std 名前空間にいくつかの C++ の機能を実装します。 ライブラリー・バージョンは、次の表の対応するヘッダーにインクルードすることにより使用できます。
|
ヘッダー |
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 |
|
|
tbb/compat/thread |
thread this_thread |
これらの C++ ライブラリー機能のほかの実装と誤ってリンクすることを防ぐために、ライブラリーはほかの名前空間に識別子を定義して、std:: 名前空間に追加します。 この方法では、リンカーに渡される「マングルネーム (エンコードされた名前)」は、ほかの実装で生成される「マングルネーム」と異なります。