【发布时间】:2014-03-26 09:31:43
【问题描述】:
我们已经构建了这个应用程序,它需要在远程机器(实际上是 MatLab 服务器)上完成一些计算。我们正在使用 Web 服务连接到 MatLab 服务器并执行计算。
为了加快速度,我们使用了Parallel.ForEach() 以便同时进行多个服务调用。如果我们非常保守地将ParallelOptions.MaxDegreeOfParallelism (DOP) 设置为 4 或其他值,那么一切都会正常运行。
但是,如果我们让框架决定 DOP,它将产生如此多的线程,以至于它迫使远程机器跪下并开始发生超时(> 10 分钟)。
我们如何解决这个问题?我希望能够做的是使用响应时间来限制呼叫。如果响应时间小于 30 秒,则继续添加线程,一旦超过 30 秒,请减少使用。有什么建议吗?
【问题讨论】:
标签: c# .net multithreading parallel-processing task-parallel-library