#c #openmp #tbb
#c #openmp #tbb
Вопрос:
Можем ли мы использовать TBB concurrent_vector с openmp?
Будут ли разрешены одновременные обновления?
Комментарии:
1. Я думаю, что ответ — да. Хотя я не могу привести источник.
Ответ №1:
Да, параллельные структуры данных TBB должны быть потокобезопасными, что означает, что любые парадигмы потоковой обработки, такие как OpenMP, TBB, Cilk, PPL и т.д., Подходят для использования параллельных структур данных TBB. Это потому, что concurrent_vector
это просто класс структуры данных, а не управляющий код, связанный с потоками.
Кроме того, мьютекс TBB также может использоваться в OpenMP, Cilk и PPL.
Ответ №2:
Согласно разделу 1.11 страницы concurrent_vector на сайте Intel, постепенный рост, ограниченный рост и перенос новых объектов в вектор являются потокобезопасными операциями.
Во введении также говорится, что добавление новых элементов не делает недействительными существующие итераторы.
Все это в совокупности означает, что вы должны иметь возможность безопасного многопоточного доступа к concurrent_vector с помощью openmp.