我们可以将 TBB concurrent_vector 与 openmp 一起使用吗?
是否允许并发更新?
是的,TBB 的并发数据结构是线程安全的,这意味着任何线程范式,例如 OpenMP、TBB、Cilk、PPL 等,都可以使用 TBB 的并发数据结构。这是因为concurrent_vector
只是一个数据结构类而不是线程相关的控制代码。
此外,TBB 的互斥锁也可以在 OpenMP、Cilk 和 PPL 中使用。
根据 Intel 站点上concurrent_vector 页面的第 1.11 节,增量增长、有限增长以及将新对象推送到向量上都是线程安全的操作。
介绍还说,添加新元素不会使现有的迭代器失效。
所有这些结合意味着您应该能够使用 openmp 安全地多线程访问 concurrent_vector。