Обработка сигналов в параллельной программе OpenMP

У меня есть программа, которая использует POSIX таймер (timer_create()). По сути, программа устанавливает таймер и начинает выполнять длительные (потенциально бесконечные) вычисления. Когда время таймера истекает и вызывается обработчик сигнала, обработчик печатает лучший результат, который был вычислен, и выходит из программы.

Я считаю, что нужно выполнять вычисления параллельно с использованием OpenMP, потому что это должно ускорить его.

В pthreads есть специальные функции, например, для установки масок сигналов для моих потоков или около того. Предоставляет ли OpenMP такой контроль, или я должен принять тот факт, что сигнал может быть доставлен любому из потоков, которые создает OpenMP?

Кроме того, если я в данный момент нахожусь в параллельном разделе моего кода и вызывается мой обработчик, может ли он безопасно завершить работу приложения (exit(0);) и делать такие вещи, как блокировка блокировок OpenMP?

Ответы на вопрос(1)

Ваш ответ на вопрос