Windows系统机制:用户模式APC与定时器处理解析
在Windows系统的运行中,用户模式异步过程调用(APC)和定时器处理是两个关键的机制,它们对于系统的高效运行和资源管理起着至关重要的作用。下面将详细介绍这两个机制的相关内容。
1. 用户模式APC
1.1 相关API及工作原理
在Windows系统里,像ReadFileEx、WriteFileEx和QueueUserAPC这类API会运用用户模式APC。以ReadFileEx和WriteFileEx函数为例,调用者能够指定一个完成例程,当I/O操作结束时该例程会被调用。I/O完成的实现方式是将一个APC排入发起I/O操作的线程队列。不过,完成例程的回调并非在APC排入队列时就一定会发生,因为用户模式APC只有在线程处于可警报等待状态时才会被传递给线程。
线程进入等待状态有两种途径:一是通过等待对象句柄并指定等待是可警报的(使用Windows的WaitForMultipleObjectsEx函数);二是直接测试是否有挂起的APC(使用SleepEx)。在这两种情况下,如果有用户模式APC处于挂起状态,内核会中断(警报)线程,将控制权转移到APC例程,并且在APC例程执行完毕后恢复线程的执行。与可以在APC_LEVEL执行的内核模式APC不同,用户模式APC在PASSIVE_LEVEL执行。
1.2 APC传递对等待队列的影响
APC传递会对等待队列进行重新排序,也就是那些记录着哪些线程在等待什么以及等待顺序的列表。如果线程在接收APC时处于等待状态,在APC例程执行完毕后,等待操作会被重新发起或重新执行。若等待仍未解决,线程会回到等待状态,但此时它会处于所
超级会员免费看
订阅专栏 解锁全文
2万+

被折叠的 条评论
为什么被折叠?



