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

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

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

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

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

8
задан osgx 16 November 2011 в 18:39
поделиться