Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Nox

Supermoderator

  • »Nox« ist der Autor dieses Themas

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

1

29.09.2007, 10:43

[Multithreading] Wann sinnvoll, wann nicht?

Da es ja durchaus interessant ist zu wissen wann Multithreading sinnvoll ist und wann nicht, sollten wir hier mal ein paar Vorschläge und Verhaltensregeln sammeln.

Ich bitte aber darum, dass hier weniger Gefühlssachen aufgelistet werden sondern nachvollziehbare Überlegungen. Also Ringe frei :)
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

2

29.09.2007, 11:57

Also ich habe mal vor einiger zeit etwas über multithreading gelesen. In dem Kapitel wurde immer wieder betont das man Bewegung der Objekte und Grafikausgabe nicht in 2 Threads packen darf da es sonst zu verschiebungen kommen kann.
Spontan würde ich sagen man kann auf jedenfall den Sound auslagern, da er nicht auf die millisekunde genau synchronisert seien muss.
Input würde auch noch gehn, aber nur wenn man mit einem MessageSystem arbeitet was die Nachrichten dann pro frame verarbeitet.

Nox

Supermoderator

  • »Nox« ist der Autor dieses Themas

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

3

29.09.2007, 12:47

Also generell kann man eigentlich alles auslagen, aber es ist nur bei wenigen Sachen sinnvoll. Auch sollte man bedenken, dass aktuelle PC mit 2 Kernen arbeiten und auch wenn es später mal 4 sind, so gibt es genug arbeit für die, denn viele Sachen sind schon in Threads ausgelagert ohne dass man es merkt. Z.B. die Fenster bei Windows sind schon in einem eigenen Thread.

Wo Threads sinnvoll sind, ist meiner Meinung nach bei asyncronen Sachen. Also sprich Sound, Netzwerk und alles was mit dranhängt. Beim Laden kann es sinnvoll sein, weil dann durch Aufrufe nicht der eigentliche Ablaufe gestört wird. Allerdings hängen diese auch noch recht direkt mit dem eigentlichen Ablauf zusammen, sodass eine Sycronisation nötig ist, wenn die Daten vom Ladethread in den eigentlich Ablauf rüber müssen.

Ansonsten sind Threads bei komplexe Anwendungen leistungssteigernd, die auf größeren Systemen laufen (Kerne>>4), aber dass ist wohl eher weniger was für den Hobbybereich.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

03.10.2007, 11:12

OK, hier mal zwei Vorschläge.
Multithreading ist sinnvoll, wenn:

1. Man mit blockierenden Funktionen arbeiten muss, aber nicht möchte, dass das gesamte Programm während der Ausführung der Funktion blockiert. Das gilt zum Beispiel für Socket-Funktionen (im Blocking Mode) oder synchrone Dateioperationen (lesen, schreiben). So kann man z.B. Ressourcen im Hintergrund laden.

2. Man Berechnungen anstellt, die sich gut parallelisieren lassen und die daher von mehreren Prozessoren/Kernen oder Hyperthreading profitieren können. Ein gutes Beispiel dafür wäre Raytracing. Man könnte das Bild in kleine Quadrate aufteilen und in einer Warteschlange die noch zu rendernden Quadrate verwalten. Dann setzt man mehrere Threads ein, um die Schlange abzuarbeiten. Dadurch erhält man automatisch ein gewisses Load-Balancing.

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

5

03.10.2007, 22:02

Habe keine Ahnung, aber mein Gefühl :P ist:
- Aufwändige 3D Spiele werden weiter jede FPS Verbesserung die sie bekommen können "aufsaugen".
- Während man ei solches Spiel spielt sollte nur Windows und weniger Services etc laufen und das braucht nicht mal einen Core.
- Ein solches Spiel wird modularisiert, z.B. 3D, Physik, Sound, "Damage Model", MP, KI etc.
- Wenn man jetzt ein solches Spiel "designed" wird es veröffentlicht, wenn eine nicht kleine, und wachsende Zahl an Käufern bereits Quad Core haben.
"Games are algorithmic entertainment."

Werbeanzeige