繁体   English   中英

显式多核C#应用程序

[英]Explicit multi-core C# applications

是否有任何简单的方法可以明确地使已经线程化的应用程序使用多核环境? (如果可用的话)。

第一个问题是如何确定我的运行时环境是否支持多核应用程序?

如果我确定我可以使用多核功能,我可以显式分配线程以在不同的内核上运行吗? 如果是这样,线程通信是由OS /硬件处理还是我必须弄脏手?

如果您的应用程序已经正确穿线,则无需执行任何操作。 线程上下文执行和处理已完成。

现在谈到线程,您的应用程序是否以某种方式利用核心? 您是否将处理器密集型任务拆分为单独的线程。 如果没有,那么您将需要进行更改以将处理任务拆分为更多线程。 您可以使用Environment.ProcessorCount来获取核心数,并在运行时为您的任务生成尽可能多的线程。

截至目前,除非您关注未来的技术,例如plinqParallel FX ,否则没有任何方法可以将不正确的线程应用程序(单线程)制作成利用所有处理器/核心的线程应用程序。

嗨,我知道有两个延伸

并行C#主页

在MS June CTP上查看Somasegars MSDN博客,了解并行3.5扩展

MSDN

该库由以下组件组成:

  • 任务并行库(TPL),它为命令式数据和任务并行性提供支持。
  • 并行LINQ(PLINQ),它提供对声明性数据并行性的支持。
  • 协调数据结构(CDS),为工作协调和管理共享状态提供支持。

目前,您可以使用Process.ProcessorAffinity为给定进程设置可用的处理器,但是隐式地处理将特定线程分配给特定处理器。 这在大多数情况下确实是一件好事,因为使用实时性能和负载平衡信息的智能运行时通常可以比静态更好地工作,至少对于少数核心上下文主流多核运行而言。

那就是问题所在。 如何制作线程应用程序,如何转换现有代码。 我想在C#中利用多核。 但是,ParallelFX仍然是测试版。 我不会使用测试版开发。 并且,我不想再次更改所有代码(我从VB 6翻译了我的应用程序)。 今天,我收到了Packt Publishing的新闻通讯,宣布了一本关于使用C#进行并行编程的新书。 C#2008和2005线程编程。 我认为它关注的是我们在任何地方写博客的事情。 如何在不等待新的奇迹语言的情况下思考和开发线程化应用程序。 很高兴看到完全专注于这个主题的书籍,因为我们有很多关于这个的博客。 链接是http://www.packtpub.com/beginners-guide-for-C-sharp-2008-and-2005-threaded-programming/book我认为值得一个机会。 我买的时候会通知你我的反馈意见。

没有详细说明(我不确定有多少信息是公开的),下一版本的.NET框架将更有帮助。 您可能不想或不需要考虑手动管理线程。 我相信在PDC(10月底)之后会有更多的信息公开。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM