コンテナー

インテル® スレッディング・ビルディング・ブロック (インテル® TBB) は、高レベルのコンカレント・コンテナー・クラスを提供します。これらのコンテナーは、低レベルの Windows® / Linux* スレッド、またはタスクベースのプログラミングとともに使用することができます。

コンカレント・コンテナーは、複数のスレッドが同時にコンテナーのアイテムにアクセスして更新できるようにします。典型的な C++ STL コンテナーでは同時更新は許可されません。同時に更新すると、コンテナーが破損する恐れがあります。STL コンテナーは、同時アクセスで安全になるようにミューテックスでラップして、コンテナー上で一度に 1 つのスレッドのみを操作するようにします。しかし、このアプローチでは並列性が損なわれるため、並列処理によるスピードアップは制限されます。

インテル® TBB に含まれているコンテナーは、次の 1 つまたは両方のメソッドにより、非常に高いレベルの並列化を提供します。

高レベルのコンカレント・コンテナーの使用にはコストがかかる点に注意してください。通常、一般的な STL コンテナーよりもオーバーヘッドが大きくなります。高レベルのコンカレント・コンテナーでの操作は、STL コンテナーでの操作よりも時間がかかります。したがって、追加の並列化が、より遅いシーケンシャル・パフォーマンスよりも重要である場合に、高レベルのコンカレント・コンテナーを使用してください。

警告

C++ のほとんどのオブジェクトのように、コンテナー・オブジェクトのコンストラクターやデストラクターは、同じオブジェクトの別の操作と同時に呼び出してはなりません。同時に呼び出した場合、競合が発生して、未定義のオブジェクトで操作が実行されます。

関連情報