什么是“一个”呢;异步IO操作“;在.NET中?
把长话短说,先读后读。简言之,这是关于ASP.NET和线程间随机切换的老问题。嗯,事实上不是随机的。正如第二篇文章所解释的,这只会在“线程执行异步IO操作时”发生。所以在这种情况下,异步IO操作到底是什么?我熟悉标准的Begin…End…IAsyncResult和异步IO的事件模型。但我看不出这是如何用线程开关连接在一起的什么是“一个”呢;异步IO操作“;在.NET中?,.net,asynchronous,io,.net,Asynchronous,Io,把长话短说,先读后读。简言之,这是关于ASP.NET和线程间随机切换的老问题。嗯,事实上不是随机的。正如第二篇文章所解释的,这只会在“线程执行异步IO操作时”发生。所以在这种情况下,异步IO操作到底是什么?我熟悉标准的Begin…End…IAsyncResult和异步IO的事件模型。但我看不出这是如何用线程开关连接在一起的 关键是——我只是害怕我的软件可能会执行的任何“隐藏”异步IO(这会引发线程切换)。但是如何识别它们呢?异步IO操作指的是调用线程不阻塞以等待IO的情况。示例包括对流、网络连接
关键是——我只是害怕我的软件可能会执行的任何“隐藏”异步IO(这会引发线程切换)。但是如何识别它们呢?异步IO操作指的是调用线程不阻塞以等待IO的情况。示例包括对流、网络连接等的BeginXXX操作
使用BeginXXX设置调用时,线程池线程将用于执行回调,而设备驱动程序通常处理实际IO。因此,可能涉及许多不同的线程 异步IO操作指的是调用线程不阻塞以等待IO的情况。示例包括对流、网络连接等的BeginXXX操作
使用BeginXXX设置调用时,线程池线程将用于执行回调,而设备驱动程序通常处理实际IO。因此,可能涉及许多不同的线程 是的,我明白。但页面处理仍将在同一线程上进行(回调除外)。然而,ASP.NET有时会设法将页面处理移动到另一个线程。Scott Gu的话说,当线程执行异步IO时,“有时”等于。据我所知,异步IO仍然等于线程池完成的IO操作。实际上,一些异步IO可以由内核本身完成,而不需要任何线程(据我所知)。我喜欢读文件。在普通Win32中也存在这种可能性(建议将其作为最快的IO选项)。我不明白的是,好吧,我有这个IO任务,我想以异步方式完成。因此,在Page_Load中,我调用BeginOperation()方法。异步操作开始,但该方法立即返回并继续页面生命周期。然后,在IO操作发生时,在其他地方执行事件处理程序、页面预渲染等操作。然后,在某个点(如Page_Render)检查IAsyncResult状态。它已经完成了,所以我调用了EndOperation()并完成了它。所以线程切换会在哪一点发生?为什么?是的,我明白。但页面处理仍将在同一线程上进行(回调除外)。然而,ASP.NET有时会设法将页面处理移动到另一个线程。Scott Gu的话说,当线程执行异步IO时,“有时”等于。据我所知,异步IO仍然等于线程池完成的IO操作。实际上,一些异步IO可以由内核本身完成,而不需要任何线程(据我所知)。我喜欢读文件。在普通Win32中也存在这种可能性(建议将其作为最快的IO选项)。我不明白的是,好吧,我有这个IO任务,我想以异步方式完成。因此,在Page_Load中,我调用BeginOperation()方法。异步操作开始,但该方法立即返回并继续页面生命周期。然后,在IO操作发生时,在其他地方执行事件处理程序、页面预渲染等操作。然后,在某个点(如Page_Render)检查IAsyncResult状态。它已经完成了,所以我调用了EndOperation()并完成了它。所以线程切换会在哪一点发生?为什么?