Резюме

Резюме

При работе с прерываниями принимайте во внимание следующие положения:

• Не оставайтесь в обработчике прерывания слишком долго — выполняйте в нем минимальный объем работы. Это поможет сократить время реакции на прерывание и упростить отладку.

• Применяйте функцию InterruptAttach() только тогда, когда нужно обращаться к аппаратным средствам непосредственно после прерывания, в противном случае избегайте ее.

• Применяйте функцию InterruptAttachEvent() во всех других случаях. Ядро запланирует поток (на основе события, которое вы передадите) для обработки возникшего прерывания.

• Защищайте переменные, используемые как в обработчиках прерываний (при использовании InterruptAttach()), так и в потоках, путем вызова InterruptLock() и InterruptUnlock().

• Объявляйте переменные, используемые в качестве посредников между потоками и обработчиками прерывании, как volatile, чтобы компилятор не кэшировал их «просроченные» значения, уже измененные обработчиком прерывания.