限制每个类的线程

时间:2018-04-19 06:47:03

标签: c# .net multithreading threadpool

我有一个.NET Web应用程序,它为每个请求从一组多个API发送请求到api之一(命中api取决于请求类型),获取响应,处理它并返回响应

A brief overview of the architecture

假设在任何给定的时间点,我们假设我们最多有100 threads,我们得到100 requests(假设每个线程都处理一个请求),请求需要去到API-1突然API-1的响应时间增加,然后我们得到后续请求,需要转到API-2,3 ... n并且所有这些API都正常工作。这些API的请求获胜直到一个线程免于处理API-1,这将导致.NET Web应用程序的整体性能影响。

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

如果我有n个类和100个线程,我应该能够将它们分成每个100 / n的线程池

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

1 个答案:

答案 0 :(得分:1)

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

C#中的异步编程是一个非常广泛的主题,已经讨论了很多。检查以下资源:

如果你真的需要,你仍然可以像往常一样限制ThreadPool线程(工作者)的数量。请参阅有关StackOverflow的Using TPL how do I set a max threadpool size讨论。