У меня есть программа на C ++, которая работает достаточно хорошо, используя OpenMP для распараллеливания циклов.
Однако есть некоторые фрагменты кода - те, которые используют очереди и приоритетные очереди и т. П. - которые будут работать параллельно, только если я объявлю доступ к ним критическим.
Альтернативным вариантом будет использование объектов данных TBB, таких как concurrent_queue
. Но могу ли я использовать эти объекты данных с OpenMP и без остальной части TBB?
Источники и ссылки приветствуются.
Спасибо!
Обновление
Например, разрешен ли следующий вид сочетания TBB и OpenMP?
concurrent_queue<int> queue;
#pragma omp parallel for
for( int i=0; i<1000; i++ )
queue.push(i);