Если таймер срабатывает каждые 10 мкс и требует 1000 мкс (1 мс) для завершения, вам потребуется 100 выделенных процессоров, чтобы едва успевать за таймерами. Короткий ответ - нет, система прерываний не собирается это поддерживать. Если прерывание рекурсивно , оно неизбежно потребляет стек обработчика прерываний.
Прерывания обычно работают, когда короткий бит кода вызывается напрямую, когда оно прерывается. Если нужно проделать больше работы, этот короткий бит запланировал бы более медленный бит и запретил бы этот источник прерывания. Это должно минимизировать задержку, вызванную разрозненными устройствами, требующими внимания процессора. Более медленный бит, когда он определяет, что он удовлетворил запрос устройства, может повторно разрешить прерывания из этого источника.
[В linux короткий бит называется верхней половиной; чем медленнее бит в нижней половине. Это немного сбивает с толку, потому что десятилетия реализации ядра до linux называли его как раз наоборот. Лучше всего избегать этих условий. ]
Один из многих способов получить желаемый эффект - заставить этот медленный обработчик освободить семафор, а затем снова включить прерывание. После этого вы могли бы иметь соответствующее количество потоков в oop, получая семафор и затем выполняя вашу задачу.