TBB concurrent_vector с openmp

#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.