如何在多核机器上运行的C#dot net代码中使用硬件线程?
如何在多核机器上运行的C sharp代码中使用硬件线程 ? 任何例子将不胜感激。
我希望在我的机器的两个核心上并行运行两个线程。 如果我用C sharp创建正常的软件线程,它们可以在单核上运行。 是否可以在两个内核上隐式并行运行这两个线程,以获得更好的性能?
您可以查看“处理器关联性”。
您可以使用System.Diagnostics命名空间强制进程在特定处理器上运行。 以下行将更改当前与处理器1和2的进程关联
System.Diagnostics.Process.GetCurrentProcess().ProcessorAffinity = (System.IntPtr)3;
Process.ProcessorAffinity属性获取或设置可以安排运行此进程中的线程的处理器。
下表显示了双处理器系统的ProcessorAffinity值选择。
Value Description 0 Not allowed 1 Use processor 1 2 Use processor 2 3 Use both processors 1 and 2
有关详细信息,请参阅以下MSDN参考 – > https://msdn.microsoft.com/en-us/library/system.diagnostics.process.processoraffinity.aspx
啊,你用THREADS。 就像在System.Threading.Thread中一样。 .NET的所有已知Windows实现都将这些实现映射到硬件线程。
您无法在C#中创建“正常的软件线程”。 你是从哪里得到这个想法的?
调度程序将尽可能地调度所有线程 – 即,它们将并行运行多个内核。
如果您安排软件线程,它们将自动在任何可用的处理器核心上运行 – 例如,如果您有两个或四个处理器核心(硬件),那么您的计算机将并行运行您的两个线程( 如果核心不忙当时做其他事情)。
即,除了创建线程之外,您不需要做任何其他事情,计算机将尽其所能尽可能地利用您的硬件。
通常没有充分理由这样做。 Windows比您在应用程序中更了解可用资源,以便安排和分发它们。
另请参阅此CodeProject文章 ,该文章非常清楚地表明了这一点(以及设置处理器关联性的一些方法)。
上述就是C#学习教程:如何在多核机器上运行的C#dot net代码中使用硬件线程?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/951278.html