SemaphoreSlim 是 .NET 专为异步并发控制设计的轻量信号量支持 await、不阻塞线程需单例注册、配超时、在 try/finally 或 using 中确保 Release避免许可证泄漏。用 SemaphoreSlim 控制并发请求数最直接不是靠加锁或队列模拟SemaphoreSlim 是 .NET 专为异步并发控制设计的轻量信号量。它支持 await不会阻塞线程适合 Web API 场景。常见错误是误用 lock 或 Monitor —— 它们同步阻塞一卡全卡高并发下线程池迅速耗尽反而拖垮服务。初始化时传入最大并发数比如 new SemaphoreSlim(5) 表示最多 5 个请求同时执行必须在 try/finally 或 using 中释放否则许可证永久泄漏后续所有请求都会卡死在 WaitAsync()设置超时如 await sem.WaitAsync(TimeSpan.FromSeconds(3))避免某个慢请求长期占着许可证ASP.NET Core 中全局限制接口并发的写法别在每个 Controller 方法里手写 WaitAsync —— 容易漏、难维护、无法统一降级策略。推荐用中间件或 ActionFilter。使用场景突发流量打爆下游依赖比如数据库连接池、第三方 HTTP 接口需要快速限流而非等超时。在 Program.cs 注册单例 SemaphoreSlimservices.AddSingleton(new SemaphoreSlim(10))写一个 ActionFilter在 OnActionExecutionAsync 里 await _sem.WaitAsync()执行完 _sem.Release()注意不要对健康检查、静态资源等路径做限制否则 /health 也卡住运维排查更困难和 Microsoft.Extensions.Concurrency 的区别这个 NuGet 包里的 TaskLimiter 看起来更“高级”但它本质是包装了 SemaphoreSlim额外加了队列和取消逻辑。多数情况下没必要引入。 唱鸭 音乐创作全流程的AI自动作曲工具集 AI 辅助作词、AI 自动作曲、编曲、混音于一体