Deferred Procedure Call
,即延迟过程调用。它最初作用是设计为中断服务程序的一部分,用来解决中断服务处理时间过长的问题。因为每次触发中断,都会关中断,然后执行中断服务例程。由于关中断了,所以中断服务例程必须短小精悍,不能消耗过多时间,否则会导致系统丢失大量其他中断。但是有的中断,其中断服务例程要做的事情本来就很多,那怎么办?于是,可以在中断服务例程中先执行最紧迫的那部分工作,然后把剩余的相对来说不那么重要的工作移入到DPC
函数中去执行。CPU
中插入一个DPC
,当执行完ISR
,退出ISR
后, CPU
就会扫描它的DPC
队列,依次执行里面的每个DPC
,当执行完DPC
后,才又回到当前线程的中断处继续执行。