У меня есть программа, которая использует таймер POSIX ( timer_create ()
). По сути, программа устанавливает таймер и начинает выполнение некоторых длительных (потенциально бесконечных) вычислений. Когда таймер истекает и вызывается обработчик сигнала, обработчик распечатывает лучший результат, который был вычислен, и завершает программу.
Я рассматриваю возможность параллельного выполнения вычислений с использованием OpenMP, поскольку это должно ускорить его.
В pthreads есть специальные функции, например, для установки масок сигналов для моих потоков или около того. Предоставляет ли OpenMP такой контроль, или я должен принять тот факт, что сигнал может быть доставлен в любой из потоков, создаваемых OpenMP?
Кроме того, в случае, если я сейчас нахожусь в параллельной части моего кода и вызывается мой обработчик , может ли он по-прежнему безопасно завершить работу приложения ( exit (0);
) и выполнить такие действия, как блокировка блокировок OpenMP?