Если я использую thread_local int x = 0
, увидит ли каждый поток OpenMP свой собственный экземпляр x
? Так как поиск thread_local
в https://www.openmp.org/wp-content/uploads/OpenMP-API-Specification-5.0.pdf не находит ничего, я думаю, нет, но был бы рад услышать иначе.
Если это не гарантировано, можно ли это объединить с threadprivate
как
thread_local int x = 0;
#pragma omp threadprivate(x)
Или мне нужно что-то вроде
#ifdef USE_OPENMP
int x = 0;
#pragma omp threadprivate(x)
#else
thread_local int x = 0;
#endif
вместо?
РЕДАКТИРОВАТЬ: High Performance Mark дал ссылку на проект 5.1 в комментарии, в которых говорится, что
Переменные, которые появляются в директивах threadprivate
или переменные со спецификатором класса хранения _Thread_local
(в C) или thread_local
(в C ++), являются threadprivate