超线程CPU +调度程序上的硬件线程(逻辑核心)

时间:2011-06-23 15:17:16

标签: multithreading windows-7 .net-4.0 threadpool multicore

我知道软件线程需要一定的时间来执行,并且每个软件线程轮流执行该块时间,但它们不是同时执行(在单个硬件线程上)。

我的问题是,当每个核心有2个或更多硬件线程时,每个硬件线程是否同时在该核心上运行,或者硬件线程是否像软件线程那样花费大量时间来执行循环游戏?

硬件线程=逻辑核心

2 个答案:

答案 0 :(得分:4)

每个(逻辑)核心只有1个(硬件)线程。

英特尔通过在1个物理内核上运行两个逻辑线程来混淆水,因此只有某些处理器才适用您的问题。而超线程很复杂,但大部分都是并发的。

就程序员而言,目前只存在一次运行1个线程的逻辑核心。

答案 1 :(得分:0)

如果您正在讨论具有超线程的处理器,那么该处理器在执行周期的大多数部分都有额外的执行流水线。至于.net应用程序关心,那么是的,您将没有时间切片和锁定软件线程。您仍然需要确保您的操作是线程安全的,否则您将需要自己进行锁定,以确保您不会通过同时从多个线程调用它们来破坏对象。验证这一点的快速测试是使用具有超线程的计算机,产生一些执行处理器繁重操作的线程并查看cpu使用情况。如果您看到所有虚拟核心都是100%,那么您就是金色。