На самом деле, у меня обратный вопрос. Почему в UNIX сигнал посылается главному потоку? Это делает практически невозможным сделать что-нибудь важное внутри обработчика сигнала. Главный поток может быть внутри менеджера кучи (удерживать критическую секцию) во время приёма сигнала. Если обработчик сигнала попытается получить доступ к куче, то произойдет взаимная блокировка с самим собой, если вам повезёт. В худшем варианте повредится куча.
Как безопасно доставить SIGINT в главный поток?
На самом деле, у меня обратный вопрос. Почему в UNIX сигнал посылается главному потоку? Это делает практически невозможным сделать что-нибудь важное внутри обработчика сигнала. Главный поток может быть внутри менеджера кучи (удерживать критическую секцию) во время приёма сигнала. Если обработчик сигнала попытается получить доступ к куче, то произойдет взаимная блокировка с самим собой, если вам повезёт. В худшем варианте повредится куча.