2013-07-18 8 views
1

Я обнаружил, что на HPUX сигнал SIGALRM может быть создан системой и зафиксирован процессом правильно в приложении с одним потоком. Однако, если я установил SIGALRM в поток, SIGALRM больше не будет. Почему? Эта проблема возникает только на платформах HPUX, но хорошо работает на других платформах UNIX (Solaris sparc, x86, Linux, AIX, Mac и Ubantu).Почему SIGALRM не может произойти в потоке на HPUX?

, пожалуйста, помогите мне! благодаря!

ответ

-1

Обработка сигналов в Multithreaded Environments: Как Обработчик сигналов: Для всех платформ UNIX сигнальные обработчики устанавливаются на основе каждого процесса. В многопоточной среде для каждого сигнала внутри процесса имеется только один обработчик сигнала. Последний обработчик сигнала, установленный для любого потока, действителен для всех потоков в процессе. Обработчик вызывается, когда передается сигнал.

Также SIGALRM является асинхронным сигналом, генерируемым событиями вне контроля процесса, который их принимает, и прибывает в непредсказуемое время. Поскольку асинхронные сигналы доставляются в процесс не для Thread независимо от инструкции, которая выполняется. Вот почему SIGALRM не может произойти в потоке на HPUX.

Это политика планирования HP-UX; есть Signal Processing Notes of HP-UX.

+0

большое спасибо! но почему он работает на других Unix? Как решить проблему? –

+0

С тех пор, как установить таймер в потоке на HPUX? ни за что? –

 Смежные вопросы

  • Нет связанных вопросов^_^