繁体   English   中英

在许多异步请求期间实际上有多少个同时(并发)连接处于活动状态

[英]How many simultaneous (concurrent) connections are actually active during a many async request

我的理解是Task是抽象出线程,并且不能保证每个Task都有新线程。

我在VS2010中进行调试,并且与此类似:

var request = WebRequest.Create(URL);

Task.Factory.FromAsync<WebResponse>(
    request.BeginGetResponse, 
    request.EndGetResponse).ContinueWith( 
    t => {  /* ... Stuff to do with response ... */ });

如果我对此进行了X调用,例如启动X异步Web请求,我如何计算在执行过程中的任何给定时间实际建立了多少个同时(并发)连接? 我假设它以某种方式仅打开了它可以打开的最大值(在X很高的情况下),而其他Tasks在等待时被阻止了?

任何对此的见解或如何与调试器一起确定在执行的给定点存在多少活动(打开)连接的任何见解都将是非常好的。

基本上,我想知道是否为我解决了该问题,或者是否需要特别考虑以免我似乎没有在攻击服务器?

这实际上不是特定于Task 调用Task.Factory.FromAsyncTask.Factory.FromAsync立即创建外部连接。 Task正在执行的“任务”只是在等待响应返回(而不是首先发送)。 因此,如果您的计算机无法再发送任何请求,对BeginGetResponse的调用将失败,并且如果服务器由于认为您正在泛滥它们而拒绝了请求,则响应将包含一条错误消息。

Task在这里真正起作用的唯一实际位置是机器实际收到响应到继续运行之间的时间间隔。 如果您收到大量响应,或者线程池中有大量工作要做,那么可能需要一些时间才能继续。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM