我的任务是编写一个高性能、高可用性的服务,该服务将在多核盒上运行。
我需要使用任务并行库()来真正利用多核服务器吗?或者,如果我将更多的硬件(核心)抛到其中,服务会自动运行得更快吗?.NET框架在幕后为我提供了魔力吗?
作为推论,对于不使用TPL的.NET应用程序,通过使用更多内核(保持每个单独核心的规范相同)来升级服务器,会提高性能吗?
根据我的理解(仔细阅读乔·达菲的书和他的博客),你确实需要为多核进行编程。我的结论准确吗?
发布于 2009-07-02 23:34:46
这很难准确回答,因为并行处理不是一个通用的问题。您需要分析您的项目,以找到可以利用并行处理的地方。
如果您的应用程序可以很容易地分解成具体的独立任务,那么并行处理肯定会得到改进。如果它本质上主要是串行的,那么多个内核/线程根本不会有帮助。
如果您已经确定并行任务代表了流程的核心,那么并行库可以帮助您执行基本任务,并使您更容易完成任务。
发布于 2009-07-02 23:46:12
看看PLinq,它将在.Net 4.0中出现。它将为您提供许多并行处理能力,而不需要管理任务/加载算法。
发布于 2009-07-02 23:54:15
一个程序需要有多个执行路径才能利用超过一个核心/处理器的功能。通常,这是通过运行多个线程来完成的,因为大多数OS提供多个执行路径的唯一方法要么是运行多个进程(可执行文件),要么是在一个进程中运行多个线程。
有几个高级抽象内置在现代语言中,以便更容易地处理本质上是多线程的内容,但最好先学习基础知识;线程
https://stackoverflow.com/questions/1077192
复制相似问题