Autor Beitrag
golgol
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 58

Win XP Prof. / Linux
C# (VS 2005)
BeitragVerfasst: Mo 28.01.08 11:49 
Hi allerseits,

ich habe eine kleine Frage zu den Threads bei .NET. Wenn ich regulär einen Thread starte wird dieser ja automatisch auf dem selben CPU-Kern ausgeführt wie der Prozess, der den Thread gestartet hat. Leider bin ich an eine lange (variierende) Parameterliste gebunden, weshalb ich nicht ein seperates Programm starten kann (ausser ich würde Remoting einsetzen, was aber nicht umbedingt sein muss). Da ich darüber hinaus auf .NET Version 2.0 festgelegt bin kann ich leider auch kein PLINQ einsetzen. Die eigentliche Frage ist nun also, ob jemand von euch eine Möglichkeit kennt einen Thread auf einen anderen Prozessor zu veschieben?
Achja: Es handelt sich dabei um einige Berechnungen, die voneinander unabhängig sind und daher gut auf unterschiedlichen Kernen eines Quad- oder Dual-Core laufen könnten.

Ich hoffen ihr habt da ein Tipp für mich :)
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mo 28.01.08 16:42 
user profile icongolgol hat folgendes geschrieben:
Wenn ich regulär einen Thread starte wird dieser ja automatisch auf dem selben CPU-Kern ausgeführt wie der Prozess, der den Thread gestartet hat.
Wo hast du das gelesen :gruebel: ? Meine Erfahrung sagt mir nämlich, dass das ziemlicher Lötzinn ist ;) . Und ein "Prozess" wird wohl auf keinem Kern ausgeführt, du kannst höchstens vom primary Thread dieses Prozesses reden.
golgol Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 58

Win XP Prof. / Linux
C# (VS 2005)
BeitragVerfasst: Mo 28.01.08 17:00 
user profile iconKhabarakh hat folgendes geschrieben:
Wo hast du das gelesen :gruebel: ? Meine Erfahrung sagt mir nämlich, dass das ziemlicher Lötzinn ist ;) . Und ein "Prozess" wird wohl auf keinem Kern ausgeführt, du kannst höchstens vom primary Thread dieses Prozesses reden.


Du hast recht, in normalen Situationen is das echt Blödsinn - hab das im Nachhinein auch festgestellt (und hätte mir eigentlich auch klar sein müssen). Das Problem bei der ganzen Sache ist, dass es bei mir hier seltsame Phänomene gibt. Führe ich zwei rechenintensive Berechnungen (hab mir da zu Testzwecken eine FFT implementiert) in zwei Threads aus so werden auch beide Kerne "belastet".
Ersetze ich nun den Inhalt der Berechnung durch die eigentliche Berechnung (die ich nur als COM-Server [dll] habe), so wandelt sich das Blatt und das ganze rennt nurnoch auf einem Kern - das ganze ist schon arg seltsam.
arj
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 378

Win XP/Vista, Debian, (K)Ubuntu
Delphi 5 Prof, Delphi 7 Prof, C# (#Develop, VS 2005), Java (Eclipse), C++, QT, PHP, Python
BeitragVerfasst: Sa 02.02.08 23:54 
Wenn du das nur als COM-Server hast, kann es sein, dass dieser nur in einem Thread läuft und nicht zwei Threads verwendet?
Dann kann natürlich nichts parallel laufen.
Heffalump
Hält's aus hier
Beiträge: 5

WIN 2000, WIN XP Prof, VISTA Ultimate
Delphi 2006 Prof, Chrome
BeitragVerfasst: Mo 04.02.08 12:35 
user profile icongolgol hat folgendes geschrieben:
Hi allerseits,

ich habe eine kleine Frage zu den Threads bei .NET. Wenn ich regulär einen Thread starte wird dieser ja automatisch auf dem selben CPU-Kern ausgeführt wie der Prozess, der den Thread gestartet hat. Leider bin ich an eine lange (variierende) Parameterliste gebunden, weshalb ich nicht ein seperates Programm starten kann (ausser ich würde Remoting einsetzen, was aber nicht umbedingt sein muss). Da ich darüber hinaus auf .NET Version 2.0 festgelegt bin kann ich leider auch kein PLINQ einsetzen. Die eigentliche Frage ist nun also, ob jemand von euch eine Möglichkeit kennt einen Thread auf einen anderen Prozessor zu veschieben?
Achja: Es handelt sich dabei um einige Berechnungen, die voneinander unabhängig sind und daher gut auf unterschiedlichen Kernen eines Quad- oder Dual-Core laufen könnten.

Ich hoffen ihr habt da ein Tipp für mich :)

Schau mal hier