http://www.cnblogs.com/wpcockroach/archive/2013/05/17/3084681.html
APC的全称是Asynchronous Procedure Call,异步过程调用。MSDN链接请猛击这里。用简短的话来总结就是:
- 每一个线程都有一个APC队列
- APC分两种,分别是kernel-mode APC和user-mode APC
- 通过调用QueueUserAPC可以向user-mode APC队列中加入APC对象
- 每一个APC对象都关联一个APCProc签名形式的回调函数
- 当线程处于alterable状态时,当前的线程就会去执行APC队列里的回调函数
- 有6个函数可以让当前的线程进入alterable状态(相当于阻塞状态),他们是SleepEx,WaitForSingleObjectEx,WaitForMultipleObjectEx,SignalObjectAndWait,GetQueuedCompletionStatusEx和MsgWaitForMultipleObjectsEx
- 上述函数的非Ex(如果有的话)版本,将重置线程的alterable状态