超线程编程语言

Posted

技术标签:

【中文标题】超线程编程语言【英文标题】:Hyper-Threading programming languages 【发布时间】:2009-05-08 23:26:52 【问题描述】:

超线程可以用哪些语言实现?它只是面向对象系统的一部分还是可以在 C 中实现?

谢谢。

【问题讨论】:

【参考方案1】:

任何支持线程的语言和运行时都将支持超线程。

超线程是一种在多个线程之间多路复用 CPU 的方法 - 只有一个真正的 CPU,但它对操作系统来说是两个 CPU 可见的,因此可以在其上调度两个线程。 CPU 在一个线程上的任何停顿(如等待内存、长时间的 FPU 操作等)都允许 CPU 从另一个线程执行代码。

有关超线程的更多信息,请访问Wikipedia。

【讨论】:

它实际上比这更细粒度。不同的计算单元(算术、浮点)可以同时计算来自不同线程的指令的结果。 是的......一个更完整的答案会在乱序执行和管道停顿的情况下给出这个,但我不想将 Hennessy 和 Patterson 的 700 页压缩成一个答案在这里:) 实际上,我不确定在 Atom 的情况下是否可以同时使用不同的计算单元,因为它是一个有序的部分。【参考方案2】:

超线程在很大程度上与在系统中拥有更多处理器相同。即使您的语言不支持线程,仍然可以让您的程序生成另一个自身副本或生成工作进程,这些进程将(如果操作系统支持)在可用处理器上保持平衡。

您需要查找您的语言的线程支持,但要注意线程很容易使您的程序复杂化,并且可能导致难以发现错误,因为代码可以异步执行。

所以您的问题的答案是“可能,但这取决于”。

至于您的其他问题,您可以根据您的运行时和编译器支持轻松地再次在 C 中实现多个线程。例如,OpenMP 扩展 http://en.wikipedia.org/wiki/OpenMP 可能对您有用。

【讨论】:

以上是关于超线程编程语言的主要内容,如果未能解决你的问题,请参考以下文章

Python进阶多任务编程(超详细)

C/C++/Assembly 以编程方式检测超线程在 Windows、Mac 和 Linux 上是不是处于活动状态 [重复]

Java学习笔记之三十四超详解Java多线程基础

超简单的Python教程系列——第15篇:多线程

超简单的Python教程系列——异步

上线半天下载量破100W!超40W字的 Java并发实现原理:JDK源码剖析,超详细讲解