我在互联网信息系统中托管的WCF服务上使用Parallel.ForEach。
据我所知,对于并行循环中的每个任务,线程都会被打开。
但是IIS对可以打开的线程数有限制。我想是20岁。
所以我的问题是:是否建议在IIS进程上使用Parallel.ForEach?
发布于 2012-08-08 16:56:51
据我所知,在IIS中使用TPL时有一些问题。
首先,IIS对其线程池中的线程没有硬性限制。这实际上取决于线程在做什么(CPU绑定、IO绑定等)。因此,线程的数量本身并不重要。
其次,据我所知,TPL将从线程池中获取线程。因此,实际上,您正在获取可用于服务请求的线程。同样,这可能是不好的,取决于你消耗了多少流量。
第三,IIS应用程序池将回收。当这种情况发生时,据我所知,IIS将冻结线程的状态,并将它们移动到另一个进程。这可能对线程操作产生意想不到的影响。
通常,您希望使用第三方物流(Parallel.ForEach),因为您有一个长时间运行的进程。对于长时间运行的进程,调用另一个主机(Windows服务)来完成繁重的任务可能会更好。例如,在Windows服务中,您可以更好地控制如何管理线程。
希望这能有所帮助。
https://stackoverflow.com/questions/11860618
复制相似问题