LINUX.ORG.RU

Интервальные таймеры для потоков ?


0

0

Насколько мне известно, в Linux интервальные таймеры отсчитывают время для процесса - сигнал SIGALRM обрабатывает единственный обработчик процесса. А есть ли методы реализовать интервальные таймеры для потоков. Где об этом можно почитать ?


timer_create, timerfd_create (кажется, третий раз уже это советую...)

Ну и сигналы можно ловить разными потоками по отдельности, хотя обработчик один на всех, да. А можно ловить sigwait'ом...

const86 ★★★★★
()
Ответ на: комментарий от const86

"Ну и сигналы можно ловить разными потоками по отдельности..."

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

Oaks
() автор топика
Ответ на: комментарий от Oaks

> Где в интернете можно найти информацию на этот счет ?

http://www.opengroup.org/onlinepubs/9699919799/

> А можно поподробнее, как разными потоками ловить сигнал SIGALRM ?

Обработчик на каждый сигнал один на весь процесс, но сигналы-то обрабатываются в контексте того потока, которому отправлены... Вряд ли в данной ситуации это сильно поможет. Зато вот таймер от timer_create в инфе к сигналу пишет свой идентификатор, а таймер от timerfd_create и вовсе является файловым дескриптором и таких можно хоть сотню штук селектить и обрабатывать асинхронно.

const86 ★★★★★
()
Ответ на: комментарий от const86

> Обработчик на каждый сигнал один на весь процесс, но сигналы-то обрабатываются в контексте того потока, которому отправлены... Вряд ли в данной ситуации это сильно поможет.

А может и поможет. Не могу с ходу найти ответ: сигнал кидается в точности тому потоку, который будильник завёл, или не обязательно?

const86 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.