我有一个系统,它会向应用程序的每个请求启动一个新线程。 如果应用程序收到数百个请求,则可能没有足够的内存可用于启动新线程,因此会引发异常。
我想知道处理这种情况的理想机制。 比如,如果应用程序收到大量请求,那么如果没有足够的内存或活动线程数达到最大值,那么我将延迟处理其他请求。
但我不知道如何实现这一点。
答案 0 :(得分:1)
简易解决方案:增加线程池限制。这实际上是可行的,尽管这些日子过时了。
更彻底的解决方案:使用SemaphoreSlim
来限制并发异步活动请求的数量。确保异步等待。如果你同步等待,你会在等待时再次刻录线程。等待异步后,您可以恢复正常的同步阻塞处理。这只需要很少的代码更改。
最全面的解决方案:完全实现异步处理。这样你永远不会用完线程。