簡體   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