如何限制并发异步I / O操作的数量?// let's say there is a list of 1000+ URLsstring[] urls = { "http://google.com", "http://yahoo.com", ... };// now let's send HTTP requests to each of these URLs in parallelurls.AsParallel().ForAll(async (url) => { var client = new HttpClient(); var html = await client.GetStringAsync(url);});这是问题所在,它会同时启动1000多个Web请求。有没有一种简单的方法来限制这些异步http请求的并发数量?这样在任何给定时间都不会下载超过20个网页。如何以最有效的方式做到这一点?
3 回答
红糖糍粑
TA贡献1815条经验 获得超6个赞
遗憾的是,.NET Framework缺少用于编排并行异步任务的最重要的组合器。内置没有这样的东西。
查看由最受尊敬的Stephen Toub构建的AsyncSemaphore类。你想要的是一个信号量,你需要一个异步版本。
- 3 回答
- 0 关注
- 733 浏览
添加回答
举报
0/150
提交
取消