c# - 限制每个类的线程

标签 c# .net multithreading threadpool

我有一个 .NET web 应用程序,它针对每个请求从一组多个 API 向其中一个 api 发送请求(要命中哪个 api 取决于请求类型),获取响应,处理它并返回响应.

A brief overview of the architecture

假设在任何给定的时间点,假设我们最多有 100 个线程,我们得到 100 个请求(假设每个线程分别处理一个请求) 请求需要转到 API-1 并且 API-1 的响应时间突然增加,然后我们得到后续请求需要转到 API-2,3 ... n 并且所有这些 API 都运行良好。在一个线程从处理 API-1 中解放出来之前,不会提供对这些 API 的请求,这会导致.NET Web 应用程序的整体性能影响。

我想要实现的是,我想限制每个 API 的线程数(假设我们为每个 api 都有一个具有某些方法的类),这样每个类都不会超过分配给它的最大线程数.

(如果我有 n 个类和 100 个线程,我应该可以将它们分成每个 100/n 个线程池)

我尝试了 few links对于线程池,但无法达到我想要的效果。

最佳答案

您的应用程序可能是异步编程模型的良好目标,如果使用得当,可以消除阻塞线程停机问题。

C# 中的异步编程是一个广泛讨论的话题。检查以下资源:

如果确实需要,您仍然可以像往常一样限制 ThreadPool 线程( worker )的数量。参见 Using TPL how do I set a max threadpool size关于 StackOverflow 的讨论。

关于c# - 限制每个类的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49914414/

相关文章:

c# - 如何使用 Dapper 映射 MySQL JSON 列

c# - Webdriver,在生成报告之前使用 "AfterScenario"重新运行失败的测试

c# - 碰撞响应 2d

c# - MultipleActiveResultSets=True 或多个连接?

Java:处理子线程中的异常

c# - LINQ LEFT JOIN where 子句不起作用

c# - Microsoft 内部 PriorityQueue<T> 中的错误?

c# - 从 ASMX 调用静态方法的陷阱

c++ - Linux 协作框架中线程数的实际限制

ios - 串行队列(主线程除外)代码是否在主线程上执行?