Состояние потоков при запуске обработчика сигнала - PullRequest
3 голосов
/ 12 ноября 2010

Предположим, многопоточное приложение с определенным обработчиком сигнала.

Теперь, если сигнал доставляется в ПРОЦЕСС, и вызывается обработчик сигнала - я сомневаюсь, что происходит с другими потоками во время работы обработчика сигнала периода. Они продолжают работать, как будто ничего не произошло, или они приостановлены на этот период .. или ...?

Также, если кто-то может сказать мне, ПОЧЕМУ обосновать ответ?

Ответы [ 2 ]

4 голосов
/ 13 ноября 2010

Спецификация довольно ясно показывает, как взаимодействуют сигналы и потоки:

Сигналы, сгенерированные для процесса, должны доставляться ровно в один из тех потоков внутри процесса, который находится ввызов функции sigwait (), которая выбирает этот сигнал или не заблокировала доставку сигнала.

Поскольку сигнал доставляется только одному потоку, другие потоки не затрагиваются (и продолжают работать).

1 голос
/ 12 ноября 2010

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

...