Зависит от того, что делает ваше приложение.
Лично я бы оставил поток только для обработки сигналов и вызвал бы sigprocmask в других потоках, чтобы остановить доставку сигналов к ним.
Основной поток / поток обработки сигналов (обычно рекомендуется сделать это основным потоком) может затем отправить сообщение своим потокам, чтобы сказать им завершить то, что они делают, и выйти.
В качестве альтернативы, если вам нравится принцип «только для сбоя», вы можете просто вызвать exit_group и покончить с этим:)