2009-02-25 23 views
1

长话短说 - 先看this article,然后看this article。简而言之 - 这是关于ASP.NET的老问题,并随意在线程间切换。那么,实际上并非如此随机。正如第二篇文章所解释的,这只发生在“当你的线程执行异步IO操作时”。所以......在这种情况下,异步IO操作到底是什么?我熟悉标准Begin ... End ... IAsyncResult和异步IO的事件模型。但我不明白这是如何与一个线程开关绑定在一起的。什么是.NET中的“异步IO操作”?

重点是 - 我只是害怕我的软件可能会做的任何“隐藏”异步IO(然后会引发线程切换)。但如何识别它们?

回答

1

异步IO操作是指调用线程不会阻塞以等待IO的情况。示例包括对流,网络连接等的BeginXXX操作。

当您使用BeginXXX设置调用时,线程池线程将用于执行回调,而设备驱动程序通常处理实际的IO。因此可能涉及许多不同的线程。

+0

是的,我明白了。但是页面处理仍然会在同一个线程上进行(除了回调)。但是,ASP.NET有时会将页面处理移动到另一个线程。 – 2009-02-25 09:12:41