APC execution context question?
当发生异步过程调用(APC)时,它将"异步"执行到线程的当前上下文。根据此MSDN信息:APC
现在我的问题是,"与当前线程的上下文异步执行"到底是什么意思?
是在线程已经在执行之外执行,还是在中断该线程以首先执行APC然后继续其工作?
因为据我所知,处理器无法"真正"同时执行两项操作。除非我完全误解了这里的"异步"概念。
任何人都可以提供解释或解释的链接吗?
线程必须处于可警报状态才能运行用户模式APC。
将用户模式APC排队时,除非它处于警报状态,否则不会定向到它所在的线程调用APC函数。
线程在调用
与当前线程的上下文异步执行
当线程调用Alertable Wait函数并切换到Alertable状态时,将执行APC函数。
我建议您阅读
1 2 | Windows via C/C++, Fifth Edition Chapter 10 - Synchronous and Asynchronous Device I/O |
这是一个更为笼统的问题。如果计算机无法一次完成很多事情,您如何看待计算机执行多任务处理?的确,在任何给定的瞬间,它可能只会做一件事,但是每个任务(无论是运行Web浏览器还是执行APC线程)都是按时间划分的,并在处理器上同时执行。尽管它们实际上是在处理器上交错的,但它们似乎是在同时执行。
当然,如果您有多个内核,就像现在大多数机器一样,它们实际上可以一次执行许多事情。