У меня есть программа на 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);