2009-05-08 9 views

Antwort

7

Jede Sprache und Laufzeit, die Threads unterstützt, unterstützt Hyperthreading.

Hyper-Threading ist eine Möglichkeit, eine CPU zwischen mehreren Threads zu multiplexen - es gibt nur eine echte CPU, aber sie ist für das Betriebssystem als zwei CPUs sichtbar, und somit können zwei Threads darauf terminiert werden. Jedes Stehenbleiben in der CPU an einem Thread (wie Warten auf Speicher, lange FPU-Operationen usw.) erlaubt es der CPU, Code von dem anderen Thread auszuführen.

Weitere Informationen zu Hyper-Threading unter Wikipedia.

+0

Es ist tatsächlich feinkörniger sogar als das. Unterschiedliche Recheneinheiten (Arithmetik, Gleitkomma) können gleichzeitig Ergebnisse von Anweisungen von verschiedenen Threads berechnen. –

+0

Yeah ... eine vollständigere Antwort würde dies im Zusammenhang mit Out-of-Order-Ausführung und Pipeline-Ständen geben, aber ich wollte nicht die 700 Seiten von Hennessy und Patterson in eine Antwort hier zu komprimieren :) – Michael

+0

Eigentlich ich bin mir nicht sicher, ob im Falle des Atoms verschiedene Recheneinheiten gleichzeitig möglich sind, da es sich um einen Teil der Ordnung handelt. – Michael

0

Hyperthreading ist zum größten Teil das gleiche wie mehr Prozessoren in einem System. Auch wenn Ihre Sprache keine Threads unterstützt, ist es dennoch möglich, dass Ihr Programm eine weitere Kopie von sich selbst erzeugt oder Arbeitsprozesse generiert, die (falls die Betriebssysteme dies unterstützen) über die verfügbaren Prozessoren verteilt werden.

Sie müssen die Thread-Unterstützung für Ihre Sprache nachschlagen, aber beachten Sie, dass Threads Ihr Programm leicht komplizieren können und zu schwer zu findenden Fehlern führen können, da der Code asynchron ausgeführt werden kann.

Also die Antwort auf Ihre Frage ist "wahrscheinlich, aber es kommt darauf an".

Wie bei Ihrer anderen Frage können Sie einfach mehrere Threads in C wieder implementieren, abhängig von Ihrer Laufzeit und Compiler-Unterstützung. Zum Beispiel könnten die OpenMP-Erweiterungen http://en.wikipedia.org/wiki/OpenMP für Sie nützlich sein.

Verwandte Themen