QT Prozesse und Dualcore

Alles rund um die Programmierung mit Qt
PeterLustig
Beiträge: 386
Registriert: 21. November 2007 20:07

Beitrag von PeterLustig »

Wikipedia hat geschrieben:... Dabei verteilt das Betriebssystem Prozesse und Anwendungen auf die einzelnen Prozessoren, die diese dann unabhängig parallel ausführen. Wird hingegen nur eine Anwendung ausgeführt, so muss diese für die mehreren Prozessoren parallelisiert werden. Das bedeutet, die Anwendung wird so modifiziert, dass sie komplett oder auch nur Fragmente davon gleichzeitig auf mehreren Prozessoren als Threads ausgeführt werden.
Picaschaf hat geschrieben:Ja, daran ist auch nichts falsch. Falsch ist, dass 2 Threads aus einem Prozess auf 2 verschiedenen Prozessoren laufen können. Ein Thread läuft immer auf dem Prozessort auf dem der Prozess läuft.
Junge, du widersprichst dir selber.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Also ist mein Turion64 X² nur ein Hyper-Threading Prozzi und hat gar nicht zwei native Kerne. Mein Athlon64 X² wohl ebenso... na gut danke für die Erleuchtung :shock:
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Picaschaf
Beiträge: 13
Registriert: 21. Mai 2008 12:53

Beitrag von Picaschaf »

Tu ich nicht. In dem Wikipedia Eintrag steht nichts davon, dass diese Threads aus einem Prozess stammen. Hier ist nur von einer Anwendung die Rede und die kann ja bekanntlich mehrere Prozesse enthalten. Sieh es einfach ein.

Ich kann ja auch riechen was für einen Prozessor du hast. Dann interpretierst du deinen Systemmanager falsch und verwechselst wohl eine Anwendung mit einem Prozess. Mir eigentlich auch egal, es ist so wie ich es beschrieben habe. Damit verdiene ich unter anderem mein Geld und wenn es nicht so wäre würde einiges nicht so laufen wie es soll.
Zuletzt geändert von Picaschaf am 25. Mai 2008 21:02, insgesamt 1-mal geändert.
john
Beiträge: 110
Registriert: 14. August 2004 20:55
Wohnort: München

Beitrag von john »

Hi, also ich hab das immer so empfunden:

Ein Prozess ist die Umgebung des Programms (Stack usw..). Zu der Umgebung (also zum Prozess) gehört mindestens eine Ereignisschleife (Thread), jedoch kann ein Prozess auch mehrere Ereignisschleifen besitzen (Also Threads).
Ich denke, dass jede Ereignisschleife (Thread) von einem Core seperat abgearbeitet werden kann. Natürlich bekommt jeder Thread eine minimale Umgebung...

^^
PeterLustig
Beiträge: 386
Registriert: 21. November 2007 20:07

Beitrag von PeterLustig »

Eine Anwendung einmal gestartet, kann nicht mehr als 1 Prozess haben. Die gestartete Anwendung selbst ist der Prozess. Und in dem Wikipedia Beitrag steht, dass die Aufsplittung auf mehrere Prozessoren durch Threads geschieht.

Warum siehst du es nicht einfach ein? Du laberst scheiße.

Ich habe übrigens auch einen Centrino Duo (2 Kerne, nicht Hyperthreading) und ein Prozess kann auch beide Kerne voll auslasten.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

john hat geschrieben: Ich denke, dass jede Ereignisschleife (Thread) von einem Core seperat abgearbeitet werden kann. Natürlich bekommt jeder Thread eine minimale Umgebung...
Na endlich einer der mich versteht :D
Picaschaf hat geschrieben:Tu ich nicht. In dem Wikipedia Eintrag steht nichts davon, dass diese Threads aus einem Prozess stammen. Hier ist nur von einer Anwendung die Rede und die kann ja bekanntlich mehrere Prozesse enthalten. Sieh es einfach ein.
Aha - dann lügt also mein Task-Manager und gaukelt mir unter einer einzigen Prozess-ID zwei Prozesse vor. Und mein Qt-Programm hat auch von allein aus QThread ein QProcess gemacht...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Picaschaf
Beiträge: 13
Registriert: 21. Mai 2008 12:53

Beitrag von Picaschaf »

Ohne meiner Kristallkugel kann ich auch nicht sagen was du falsch machst. Ich wiederhole mich jetzt nicht noch einmal, sondern lasse es einfach stehen. Hättest du Ahnung von Prozessortechnik wüsstest du, dass das gar nicht funktionieren kann!
PeterLustig
Beiträge: 386
Registriert: 21. November 2007 20:07

Beitrag von PeterLustig »

Christian, ich hab dir ja gesagt das er es nicht einsehen wird...
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

PeterLustig hat geschrieben:Christian, ich hab dir ja gesagt das er es nicht einsehen wird...
Ja, bin auch auch nur ein blöder Softwareprogrammierer ohne Ahnung :wink:
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
john
Beiträge: 110
Registriert: 14. August 2004 20:55
Wohnort: München

Beitrag von john »

Ohne meiner Kristallkugel kann ich auch nicht sagen was du falsch machst. Ich wiederhole mich jetzt nicht noch einmal, sondern lasse es einfach stehen. Hättest du Ahnung von Prozessortechnik wüsstest du, dass das gar nicht funktionieren kann!
Wer macht was falsch? Und gewagte Aussage^^
Möchtest du mehrere Kerne oder Prozessoren nutzen musst du Prozesse erzeugen.
Ich weiß nicht, was du unter Prozess verstehst.
Threads reichen nicht aus, da Threads nicht ausgelagert werden können, sie laufen auf dem Prozessor auf dem der Parent-Prozess läuft.
Verstehe ich auch nicht, kann dies auf Basis deiner Aussage nicht nachvollziehen.
Parallelisierung von Threads gibt es auch und nennt sich bei Intel beispielsweise Hyperthreading...
Hm, also ich verstehe unter "Parallelisierung von Threads" in der Softwareentwicklung, dass sich meine Threads gegenseitig Synchron halten und somit einen Datenaustausch ermöglichen...
Die Verteilung der Prozesse kannst du nicht beeinflussen, das ist Aufgabe des Betriebssystems.

Jup, aber ich kann doch meinen BS sagen, mit welchem Core es welchen Thread abarbeiten soll... -falls das in irgendeiner Weise sinnvoll wäre.
Das Einzige was ich mir vorstellen könnte wäre ein Linux mit einer Erweiterung die genau das ermöglicht (ist mir allerdings nicht bekannt). Unter Windows und MacOS X geht es auf jeden Fall nicht.
schon mal den Taskmanager von Windows angeschaut?

^^

LG johno


PS.: ich glaube wir haben eine Unterschiedliche Definition von Threads und Prozessen...
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Man muß ja nicht immer nur die Wikipedia als Referenz nehmen. Die Qt-Doku tuts auch:
Programs written with QtConcurrent automaticallly adjust the number of threads used according to the number of processor cores available. This means that applications written today will continue to scale when deployed on multi-core systems in the future.
Sephral
Beiträge: 201
Registriert: 1. Februar 2006 09:40
Kontaktdaten:

Beitrag von Sephral »

John + PeterLustig haben es ein Stück weiter oben schon gut beschrieben, aber ich möchte trotzdem noch mal mein Verständnis zu diesem Thema zum besten geben, ggf hilft eine etwas andere Formulierung weiter.


Jede Instanz einer Anwendung wird repräsentiert durch EINEN Prozess im Betriebssystem. Ein Prozess beinhaltet ein gewisses Umfeld (Speicherbereiche usw.). Ein Prozess läuft genau auf einem Core / Prozessor, so lange man keine zusätzlichen Threads startet.

Das Betriebssystem entscheidet auf welchem Core/Prozessor der Anwendungs-Prozess angesiedelt wird. Diese Entscheidung basiert auf der Auslastung der einzelnen Cores (und sicher noch vielen anderen Faktoren) und kann (zumindest unter Windows, unter linux geht's aber sicher auch) auch beeinflusst werden.

Möchte man seine Anwendung auf mehrere Cores / Prozessoren verteilen, benötigt man unbedingt Threads. Das Betriebssystem sorgt dafür, dass den Threads die "Umgebung" des Mutter-Prozesses zur Verfügung gestellt wird. Mit irgendwelchen fiesen Tricks kann man sogar beeinflussen, wie die Threads auf die Cores / Prozessoren verteilt werden (glaube das in einer Multiprozessor-Bibliothek gesehen zu haben, und Qt kann es mit QtConcurrent ja offenbar auch).

Eine Anwendung ohne Threads wird also immer nur einen Prozessor belegen, wenn man trotzdem etwas anderes beobachtet, kann das daran liegen, dass man z.B. SDKs in der Anwendung verwendet, die im Hintergrund "versteckt" Threads einsetzen.


just my 2 cents :-)
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

@sephral: Du hast unter Garantie auch keine Ahnung von Prozessortechnik aber widersprichst dem Experten? Du bist doch sicher auch nur ein Unwissender Softwareentwickler... :wink:


Ich finde deine Erklärung ist sehr gut für normale User die nicht viel Ahnung von den Internas haben. Und damit sie nicht untergeht mache ich den Thread jetzt zu.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Gesperrt