gpt4 book ai didi

c# - 仿形异步调用时如何获取最大出站请求?

转载 作者:行者123 更新时间:2023-12-03 12:50:57 30 4
gpt4 key购买 nike

通过Fiddler分析下面的代码,我意识到使用Parallel Extensions最多可以得到2个出站请求:

new string[] 
{
"http://stackoverflow.com",
"http://superuser.com",
"http://serverfault.com",
"http://stackexchange.com"
}
.AsParallel()
.Select(a => HttpWebRequest.Create(a).GetResponse())
.ToArray()
;

我应该使用哪种方法来最大化出站请求的数量?

最佳答案

根据Wireshark,此代码在我的计算机上并行运行所有6个HTTP请求:

var urls = new string[] 
{
"http://stackoverflow.com",
"http://superuser.com",
"http://serverfault.com",
"http://stackexchange.com",
"http://www.howtogeek.com",
"http://meta.stackoverflow.com"
};

var reqs = urls.Select<string, WebRequest>(HttpWebRequest.Create).ToArray();
var iars = reqs.Select(req => req.BeginGetResponse(null, null)).ToArray();
var rsps = reqs.Select((req, i) => req.EndGetResponse(iars[i])).ToArray();

基本上,它为每个URL创建一个 WebRequest,在每个URL上调用 BeginGetResponse,然后使用 EndGetResponse为每个URL调用 IAsyncResult

该文档指出 BeginGetResponse使用 The Managed Thread Pool发出HTTP请求。

关于c# - 仿形异步调用时如何获取最大出站请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1776667/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com