Использование OpenMP при написании библиотеки - PullRequest
0 голосов
/ 23 октября 2018

При разработке статически связанной библиотеки, как мне защитить код, обращающийся к общим данным, от гонок данных с использованием OpenMP?

Если я просто использую #pragma omp critical в разделах, которые мне нужно запустить последовательно, я собираюсьхорошо, если клиент библиотеки использует другую реализацию потоков, такую ​​как pthreads?Критический раздел скомпилирован в библиотеку как мьютекс?

1 Ответ

0 голосов
/ 25 октября 2018

Глядя на последнюю спецификацию OpenMP , он заявляет, что critical гарантирует, что только один поток из "группы конфликтов" выполняет блок за раз.Насколько я понимаю, определение конкурентной группы охватывает только потоки OpenMP.Таким образом, технически реализация OpenMP может быть написана так, что critical не работает с другими библиотеками потоков.

...