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

Errschaffer

Alter Hase

  • »Errschaffer« ist der Autor dieses Themas

Beiträge: 865

Wohnort: Frankfurt

  • Private Nachricht senden

1

02.10.2008, 14:43

Funktionen gleichzeitig laufen lassen

Hallo,
ich vielen Spielen ist es ja so das Funktionen gleichzeitig laufen.
Z.b bei Emergency 4 (kennt das jemand? ) da fahren die Fahrzeuge zurück zur Basis aber gleichzeitig werden neue Einsätze erstellt oder es laufen sogar mehere Einsätze gleichzeitig.

Nur wenn ich schreibe:

C-/C++-Quelltext

1
2
3
Funktion1 ();
Funktion2 ();
Funktion3 (),


Dann wird das ja von oben nach unten abgearbeitet.
Frage: Wie kann ich mehrere Funktionen paralell ausführen?

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

2

02.10.2008, 14:54

öhm das stellst du dir grad nen bissle zu falsch vor :D.

das was du meinst ist wesentlich komplizierter und läuft z. b. über listen, die ständig abgefragt werden und einfach innerhalb eines frames abgearbeitet werden (z. b. eine liste mit einsätzen).

das was du willst codetechnisch ist mit multithreading, also parallelen prozessen, möglich. aber das kann man umgehen und wäre auch nicht falsch, aber da multithreading viele tücken hat und teilweise sehr schwer zu debuggen ist würde ich dir dazu nicht raten.

3

02.10.2008, 14:59

Das geht mit Threads, also in dem du deine Anwendung in mehrere Prozesse aufteilst - auf die Schnelle hab ich das hier gefunden: https://www.spieleprogrammierer.de/phpBB2/viewtopic.php?t=6661&highlight=threads+erstellen.
Was du aber in den Spielen meintest, basiert in der Regel nicht auf einzelnen C++-Funktionen - so viele Threads sind afaik keine gute Idee - sondern auf vielen Schritten, von denen in jedem Frame einer abgearbeitet wird, also es wird z.B. in jedem frame von jedem Fahrzeug, Einsatz, was auch immer eine bestimmte Funktion (meistens nennt man sie move) aufgerufen, die das Teil dann ein kleines Stück weiterbewegt, außerdem gibt es dann zusätzliche Funktionen, um einem Objekt zu sagen, was es tun soll, und was es gerade tut, speichert man dann in Membervariablen der jeweiligen Klasse.

Errschaffer

Alter Hase

  • »Errschaffer« ist der Autor dieses Themas

Beiträge: 865

Wohnort: Frankfurt

  • Private Nachricht senden

5

02.10.2008, 23:13

Von Threads würde ich vorläufig mal die Finger lassen. Wie gesagt sind diese recht schwierig zu handhaben, man muss auch schauen wegen Synchronisation und es ist nicht garantiert, dass alle gleich oft aufgerufen werden.

Das meiste ist durch einfache logische Aufteilung in mehrere Klassen/Funktionen zu bewerkstelligen.

Anonymous

unregistriert

6

02.10.2008, 23:16

Mit boost::thread kann man sehr einfach und vorallem schön mit Threads umgehen. :)

Ich empfehle dir aber auch wie mein Vorgänger erstmal (ordentlich) die Finger von diesem Thema zu lassen.

Werbeanzeige