Tag: 多核

如何以编程方式确定是在多核,超线程还是多处理器上?

我知道如何获得处理器类型,也许这是唯一的方法,但我实际上正在寻找一种方法来确定应用程序是在多核处理器上运行还是在超线程单核处理器上运行 。 (背景:我的一些客户的托管服务提供商对于他们通过VMWare映像提供的资源非常模糊。这个应用程序应该在多核上运行,但自上次“移动”以来已经看到了有害的性能。通常情况下,一个线程上的多核,一个核心峰值,而不是另一个线程。在这个“多核”上,即使在单线程应用程序上,两个处理器都会出现峰值。)

多核处理器上的多个线程

如何在multithreading系统中的CORES之间分配线程。 假设我有一个创建6个线程的程序。 我的系统有3个CORES。 在这种情况下,线程是在3个CORE之间分配还是所有线程都在同一个CORE上执行?

如何在.NET中最有效地利用多个内核进行简短计算?

下面是上下文:我正在用C#编写一个名为Heron的小编程语言的解释器,它有一些可以并行执行的原始列表操作。 我面临的最大挑战之一是,只要遇到可并行化的操作,就可以有效地将评估者完成的工作分配到不同的核心。 这可以是短期或长期操作,很难提前确定。 我不必担心的一件事是同步数据:显然不允许并行操作修改数据。 所以我的主要问题是: 跨线程分配工作的最有效方法是什么,这样我才能保证计算机将工作分配到两个核心? 我也对相关问题感兴趣: 在我们开始克服将工作分离到另一个线程的开销之前,操作需要多长时间?

为什么C#中的multithreading不能达到100%的CPU?

我正在研究一个处理许多请求的程序,它们都没有超过50%的CPU( 目前我正在研究双核 )。 所以我为每个请求创建了一个线程,整个过程更快。 处理9个请求,单个线程持续02min08s,同时3个线程同时工作,时间减少到01min37s,但它不使用100%CPU,只有大约50%。 我怎么能让我的程序使用完整的处理器function? 编辑应用程序不是IO或内存有限,它们一直处于合理的水平。 我认为它与’双核’事物有关。 每个请求都使用一个锁定的方法调用,但它确实很快,我不认为这是问题所在。 我的代码中代价更高的部分是通过COM调用dll(从所有线程调用相同的外部方法)。 这个dll也没有内存或IO限制,它是一个AI识别组件,我正在对薪水进行OCR识别,对请求进行薪水检查。 EDIT2 STA COM方法很可能是我的问题,我联系了组件所有者以解决这个问题。