C# 中一个限制 Task 并发执行的数量的示例
2019-09-09 11:58 音乐让我说 阅读(3366) 评论(0) 编辑 收藏 举报直接贴代码了:
using System; using System.Linq; using System.Threading; using System.Threading.Tasks; class TaskSample { public static void Do() { Run(); } private static readonly SemaphoreSlim _mutex = new SemaphoreSlim(5); private static void Run() { var allTasks = Enumerable.Range(1, 10000000).Select(id => DoWorkAsync(id)); //await Task.WhenAll(tasks); Task.WaitAll(allTasks.ToArray()); } private static async Task DoWorkAsync(int id) { await _mutex.WaitAsync(); try { Console.WriteLine($"Starting Work {id}"); await HttpClientGetAsync(); Console.WriteLine($"Finished Work {id}"); } finally { _mutex.Release(); } } static async Task HttpClientGetAsync() { await Task.Delay(2000); } }
运行截图:
谢谢浏览!
作者:音乐让我说(音乐让我说 - 博客园)
出处:http://music.cnblogs.com/
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步