Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么是“一个”呢;异步IO操作“;在.NET中?_.net_Asynchronous_Io - Fatal编程技术网

什么是“一个”呢;异步IO操作“;在.NET中?

什么是“一个”呢;异步IO操作“;在.NET中?,.net,asynchronous,io,.net,Asynchronous,Io,把长话短说,先读后读。简言之,这是关于ASP.NET和线程间随机切换的老问题。嗯,事实上不是随机的。正如第二篇文章所解释的,这只会在“线程执行异步IO操作时”发生。所以在这种情况下,异步IO操作到底是什么?我熟悉标准的Begin…End…IAsyncResult和异步IO的事件模型。但我看不出这是如何用线程开关连接在一起的 关键是——我只是害怕我的软件可能会执行的任何“隐藏”异步IO(这会引发线程切换)。但是如何识别它们呢?异步IO操作指的是调用线程不阻塞以等待IO的情况。示例包括对流、网络连接

把长话短说,先读后读。简言之,这是关于ASP.NET和线程间随机切换的老问题。嗯,事实上不是随机的。正如第二篇文章所解释的,这只会在“线程执行异步IO操作时”发生。所以在这种情况下,异步IO操作到底是什么?我熟悉标准的Begin…End…IAsyncResult和异步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()并完成了它。所以线程切换会在哪一点发生?为什么?