我正在开发 WPF 应用程序。
在屏幕/ View 中,我必须对 WCF 服务进行 6 次调用。从不共享数据的意义上说,这些调用都不相关,也不相互依赖。我计划使用 TPL 并将这 6 个 WCF 服务调用作为 6 个任务。现在应用程序可能部署在单核机器或多核机器上。
有人告诉我,在单核机器上使用 TPL 实际上会增加任务完成所需的时间,因为 cpu 调度程序会在时间上拼接不同的任务。这是真的。如果是,我应该继续我的设计还是应该寻找替代方案。
如果我必须考虑替代方案,那些替代方案是什么 :)?
最佳答案
在执行 CPU 密集型任务时,您会通过在单核计算机上运行并行线程来增加开销。
在您的情况下,任务不是 CPU 密集型任务,它们正在等待服务调用响应,因此您可以在单核机器上很好地运行并行线程。
根据服务器处理调用的方式,可能不会增加任何时间。如果调用在服务器上排队,则运行所有调用将花费大约相同的时间。在这种情况下,最好按顺序运行调用,因为这样更简单。
关于c# - 任务并行库 - 单核并行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12140201/