延迟过程调用 延迟过程调用DPC是Microsoft Windows操作系统的机制允许高优先级任务如中断处理程序英语interrupt handler延迟所需的低优先级任务稍后执行这使得设备驱动程序与其他低层事件消费者更快地执行其处理的高优先级部分调度非关键的附件处理稍后以较低优先级执行 DPC是通过DPC对象实现的当设备驱动程序或其他内核态程序发出DPC请求时操作系统内核创建DPC对象投寄到DPC队列尾部多核处理器的每个内核有自己的DPC队列当Windows操作系统的IRQL降低到DispatchDPC级操作系统检查DPC队列逐个执行挂起的DPC直至队列为空或者发生IRQL更高的中断 例如当时钟中断發生时时钟中断服务程序通常增加当前线程的计数器以计算当前线程的总执行时间把它的时间片减当时间片减少到线程调度器将被唤醒去选择下一个在当前处理器内核上运行的线程并做线程上下文切换时钟中断服务程序运行在非常高的IRQL上它应该在稍后的IRQL下降到低级时才去执行线程调度程序因此时钟中断服务程序请求一个DPC对象并把这个对象放在DPC队列尾部当处理器的IRQL下降到DPCDispatch级别时回去执行DPC队列中的任务 当流音视频工作时使用DPC处理流输入到缓冲区的音频如果另外一个DPC执行了很长时间并且另一次中断产生了新的缓冲区数据在第一块数据被处理前会发生信号缺失英语Dropout electronics结果