为了账号安全,请及时绑定邮箱和手机立即绑定

如何限制并发异步I / O操作的数量?

如何限制并发异步I / O操作的数量?

C#
扬帆大鱼 2019-07-23 19:50:24
如何限制并发异步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类。你想要的是一个信号量,你需要一个异步版本。


查看完整回答
反对 回复 2019-07-23
  • 3 回答
  • 0 关注
  • 733 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信