Autor Beitrag
DelphMan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 57



BeitragVerfasst: So 19.11.06 22:04 
Hallo,


heutzutage gibt es ja schon Dual Quadcore CPU-Systeme für relativ moderates Geld (verglichen damit, dass das "früher" mal ein echter Großrechner war).

Wie verhält sich das eigentlich mit Delphi TThreads? Angenommen ich hätte so ein 2x4 CPU Monster und baue in Delphi 512 TThreads, die alle etwas machen, z.B. Threads eines Streamingservers sind.

Verteilt das Betriebssystem die Threads (einfache Delphi TThreads) gleichverteilt über die CPUs? Nach welchen Maßstäben? Oder einfach reihum?

Ist das Betriebssystem (XP Professional) in der Lage, ein und denselben Thread von einer CPU (die gerade viel zu tun hat) im laufenden Betrieb auf eine andere CPU zu legen oder ist ein Thread, wenn er einmal erzeugt wurde, sklavisch an eine CPU gebunden?

Dankeschön!


Gruß


DelphMan
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 20.11.06 17:23 
Hallo!

Ich habe hier ein paar Beiträge entfernt. Bitte beschränkt Euch darauf, die Fragen zu beantworten. Eine Diskussion, welchen Prozessor es für wieviel Geld gibt, gehört hier nicht hin.

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Stefan.Buchholtz
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 612

WIN 2000, WIN XP, Mac OS X
D7 Enterprise, XCode, Eclipse, Ruby On Rails
BeitragVerfasst: Mo 20.11.06 17:48 
Normalerweise vergibt das Betriebssystem die Threads so, dass die Prozessoren eines Multiprozessorsystems möglichst gleichmässig ausgelastet sind. Ein Thread ist nicht an einen Prozessor gebunden, sondern der Scheduler kann jedes mal wenn ein Thread Rechenzeit erhält, ihn auf einem anderen Prozessor ausführen.
Man kann mit den Systemfunktionen SetThreadAffinityMask und SetThreadIdealProcessor zu beeinflussen, auf welchem Prozessor ein Thread ausgeführt wird. Mit SetThreadAffinityMask kann man einschränken, auf welchem Prozessor ein Thread ausgeführt werden kann und mit SetThreadIdealProcessor kann man einen bevorzugten Prozessor angeben - der Scheduler lässt den Thread dann nach Möglichkeit auf diesem Prozessor laufen, kann ihn aber auch einem anderen zuweisen.
Im Normalfall ist es aber nicht sinnvoll, diese Funktionen zu benutzen, weil sie die Möglichkeiten des Schedulers einschränken.

Stefan

_________________
Ein Computer ohne Windows ist wie eine Schokoladentorte ohne Senf.
DelphMan Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 57



BeitragVerfasst: Mo 20.11.06 18:00 
Danke für die Antwort!

Dass es so fein granuliert (pro Rechenzeit ist CPU vom BS definierbar)
zur Sache geht, hätte ich nicht gedacht!