openmp で TBB の concurrent_vector を使用できますか?
同時更新は許可されますか?
はい、TBB の並行データ構造はスレッド セーフであることを意図しています。つまり、OpenMP、TBB、Cilk、PPL などのスレッド パラダイムが何であれ、TBB の並行データ構造を使用しても問題ありません。これはconcurrent_vector
、スレッド関連の制御コードではなく、単なるデータ構造クラスであるためです。
さらに、TBB のミューテックスは、OpenMP、Cilk、および PPL 内でも使用できます。
Intel サイトのconcurrent_vector ページのセクション 1.11 によると、インクリメンタル グロース、リミテッド グロース、およびベクターへの新しいオブジェクトのプッシュはすべて、スレッド セーフな操作です。
導入部では、新しい要素を追加しても既存の反復子が無効にならないことも述べています。
これらすべてを組み合わせると、openmp を使用して、concurrent_vector へのマルチスレッド アクセスを安全に行うことができるはずです。