显式多核C#应用程序

TK.*_*TK. 5 c# multicore runtime-environment

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

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

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

mat*_*ant 11

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

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

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