Я хочу использовать setitimer()
(или менее вероятно, alarm()
) в многопоточном процессе в Linux 2.6+ с NPCL-совместимым libc. Какой поток получит sigalarm (SIGALRM)
из ядра?
Спасибо.
2014-04 update: Как установить setitimer()
в многопоточной программе, если я хочу написать служебную программу профилирования, такую как gpperftools cpuprofile; но в моем инструменте я хочу поддерживать как динамически связанные программы (поэтому можно добавить мою собственную библиотеку для профилирования init) и статически связанные программы (без возможности делать ^^^^^^).
Мой текущий инструмент профилирования работает с настройкой setitimer
сразу после fork()
и до exec()
, а также использует ptrace
для получения контроля над целевой программой и для захвата SIGPROF/SIGVPROF/SIGALRM, сгенерированного с помощью setitimer
. Я не знаю, как это работает с многопоточными программами.