I
Ibe1970
Gast
-Daniel- schrieb:Herzlichen Glückwunsch, du hast überhaupt keine Ahnung vom Programmieren. Tätige lieber keine Aussagen mehr zu dem Thema. Danke.
Hinweis: Es ist ohne weiteres möglich eine exakt definierte Anzahl an Threads zu erstellen. Bei vielen Engines ist dies auch so.
Beispiel: 1 Thread der nur Rendering-Aufgaben übernimmt, 1 Thread Input, Sound, Whatever, 1 Threads Physik.
Selbst wenn du Standardbibliotheken für Multi-Threading benutzt, ist es nicht sinnvoll
Parallal.For(int i = 0; i < 8; ++i)
{
doMiniTask(i);
}
auf 8 Threads aufzuteilen, weil der Overhead VIEL zu groß wäre.. Deswegen spezifiziert man typischerweise eine Maximalanzahl an Threads auf die man die Aufgabe aufteilen möchte. Bei Spielen werden derartige Konstrukte auch eher nicht eingesetzt, da du mit oben gezeigter Methodik zwar Aufgaben sehr einfach auf viele Threads verteilen kannst, aber dann auch threadsichere Datencontainer benötigst und auch eine zu dem Schema passende Aufgabe bearbeiten musst (selten sinnvoll!).
Nur sehr spezielle Algorithmen lassen sich perfekt parallelisieren. Typischerweise eher im wissenschaftlichen Bereich oder bei der Verarbeitung großer Datenmengen (z.B. Bildverarbeitung, Komprimierung, Machine Learning, ...).
Bei Spielen dominieren typischerweise sequentielle Aufrufe. Selbst wenn ein Spiel 8 Kerne nutzen kann, laufen diese üblicherweise nicht auf Anschlag, so dass ein Quadcore das genau so schafft (vor allem wenn er vielleicht sogar noch etwas höher getaktet ist). Es gibt bisher nur sehr wenige Ausnahmen.
Dann wirf doch mal einen Blick auf die Kern Auslastung bei GTA 5
http://extreme.pcgameshardware.de/a...derungen-nicht-fluessig-cpuauslastunggtav.png
Wenn du da noch irgendetwas nebenbei (Streaming, Virusscan) nebenbei machen willst wird das definitiv deine FPS drücken! Ein 8 Kerner oder zumindest i7 mit HT hätte da noch deutlich mehr Luft! Sorry,aber der i5 ist mittlerweile nicht mehr zeitgemäß mit seinen 4 Kernen und zukunftssicher schon lange nicht!