Я закончил тем, что создал отдельный поток профилировщика, который спит для интервалов и pthread_kills
всех других потоков с SIGPROF
. Обработчик SIGPROF
определяет, сколько процессорного времени потратил поток, и отбрасывает его, если он слишком мал.