Каково влияние, если я вызываю syscall (SYS_gettid) из обработчика сигнала? - PullRequest
1 голос
/ 01 февраля 2012

Может кто-нибудь сказать мне, что может быть неблагоприятным эффектом вызова системного вызова (SYS_gettid) из обработчика сигналов?Я знаю, что в списке безопасных функций нет вызова из обработчика сигнала, но я хочу знать причину этого?

1 Ответ

1 голос
/ 17 февраля 2012

Я почти уверен, что это связано с реентерабельностью методов обработчика сигналов. Предположим, что сигнал отправлен, и ваш обработчик захватывает сигнал и начинает обработку. Во время обработки другой сигнал может быть отправлен параллельной программой, и ваш обработчик снова захватывает этот сигнал и начинает его обрабатывать.

В зависимости от того, как работает планирование, возможно, что один и тот же фрагмент кода, обработчик сигнала, выполняет во время собственного выполнения . Проблема в том, что он использует те же указатели и переменные, поэтому может сам себя повредить, особенно потому, что gettid () возвращает идентификатор текущего потока. Какая текущая нить в этом случае?

...