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