Лучший способ справиться с этим - вообще не требовать каких-либо действий по отключению.
Например, ваш обработчик сигнала для (например) SIGTERM или SIGQUIT может просто вызвать _exit и выйти из процесса без очистки.
В Linux (с не древними потоками), когда один поток вызывает _exit (или завершается, если вы действительно хотите), другие потоки также останавливаются - что бы они ни делали.
Это было бы хорошо, так как в нем реализован проект «только при сбое».
Проект «только при сбое» для сервера основан на том принципе, что машина может дать сбой в любой момент, поэтому вам необходимо иметь возможность восстанавливаться после такогонеудача в любом случае, так что просто сделайте это нормальным способом выхода.Никакого дополнительного кода не требуется, поскольку ваш сервер в любом случае должен быть достаточно надежным.