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

Lemming

Alter Hase

  • »Lemming« ist der Autor dieses Themas

Beiträge: 550

Beruf: Schüler

  • Private Nachricht senden

1

07.12.2005, 00:05

Ladefunktion in 2. Thread

Hi Jungs,

ich hab mal probiert meine Ladefunktion in nen 2.Thread auszulagern und wärend dem Laden nen einfachen Ladebildschirm anzuzeigen.
Funktioniert ansich auch ganz gut. Ich hab nur das Problem, dass mitten im Laden auf einmal der Text den ich mit der TB anzeige verschwindet und wieder auftaucht, die Hintergrundtextur weiß wird und manchmal auch die Font.tga Datei, also die Font Bitmap als Hintergrundbild auftaucht. Außerdem krieg ich manchmal nach dem Laden Programmabstürze. Den Thread hab ich ansich ganz gut synchronisiert und so.

Vll Kennt jemand nen gutes tut wo erklärt wird worauf man alles achten muss.
Is zu viel betroffener Code um den zu posten und weil so viel mir unerklärliches passiert fällts mir auch schwer das Problem einzugrenzen.
Ich hoffe einer hat ne Idee worans liegen könnte, damit ich dem nachgehen kann....
Es gibt Probleme, die kann man nicht lösen.
Für alles andere gibt es C++...

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

07.12.2005, 07:35

schreib doch nur die aufrufe rein und welche sachen du in den thread auslagerst bzw. welche Res du nutzt, denn threads sind einfach böse in mancherlei Hinsicht.

Renderst du im dem 2. Thread?
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.

Lemming

Alter Hase

  • »Lemming« ist der Autor dieses Themas

Beiträge: 550

Beruf: Schüler

  • Private Nachricht senden

3

08.12.2005, 14:05

in dem thread mach ich nichts anderes als der reihe nach die resourcen laden und ne bool variable setzen, die sagt, ob er lädt oder ob er fertig ist mit laden.
gerendert wird im Hauptprog (also nicht in einem anderen thread)...

was mich am meisten irritiert ist, dass dieses hintergrundbild und auch die schrift manchmal geht und manchmal nicht. hab so das gefühl, da würden sachen im mem hin und her geschoben, die nicht mal angefasst werden sollten!!!

in diesem sinne threads können sehr böse werden. aber ich fänds gut, wenn man das prog auch im laden beenden könnte uns sowas...
Es gibt Probleme, die kann man nicht lösen.
Für alles andere gibt es C++...

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

4

08.12.2005, 16:50

1. bool kannst du vergessen!!!
2. mach einfach mal alles raus aus dem 2. Thread, dann sollte das flackern nicht mehr sein. Und dann fügst du nach und nach wieder einiges ein.
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.

Lemming

Alter Hase

  • »Lemming« ist der Autor dieses Themas

Beiträge: 550

Beruf: Schüler

  • Private Nachricht senden

5

08.12.2005, 17:10

zu 1. Ich verwende 'BOOL' das is nen unsigned long

zu 2. werd ich mal ausprobieren.


Kennt wirklich keiner nen gutes tut dazu??
Es gibt Probleme, die kann man nicht lösen.
Für alles andere gibt es C++...

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

6

08.12.2005, 17:14

ich meinte mit bool vergessen, dass du alle Vars dafür vergessen kannst. Du musst CriticalSections oder der gleichen nutzen.
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.

Lemming

Alter Hase

  • »Lemming« ist der Autor dieses Themas

Beiträge: 550

Beruf: Schüler

  • Private Nachricht senden

7

08.12.2005, 17:48

ich hab ne critical section... und in der setz ich die bool variable

oder hab ich den sinn der dinger falsch verstanden

PS: Die Abstürze hab ich schon mal hinter mir *freu* Jetzt gibts nur noch Probs mit den Texturen
Es gibt Probleme, die kann man nicht lösen.
Für alles andere gibt es C++...

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

8

08.12.2005, 18:20

Mir scheint so. Mach es am besten so dass er solange den Ladebildschirm aktiviert lässt, bis der Befehl TryEnterCriticalSection funktioniert. Erst dann kannst du sicher auf die Speicherbereiche zugreifen vorrausgesetzt du verlässt die CS erst nach dem erfolgreichen laden ;)

Wegen Ladezustand kannst du ja einen int var mit den Wert von 0 -1 einrichten. Ob für diese auch eine CS nötig ist kann ich so nicht direkt beurteilen, jedoch sollte man eine lokale Kopie erstellen um Fehler zu vermeiden.
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.

Lemming

Alter Hase

  • »Lemming« ist der Autor dieses Themas

Beiträge: 550

Beruf: Schüler

  • Private Nachricht senden

9

08.12.2005, 21:39

hab mal weiter rumdebugged und kam zu keinem schönen ergebnis:

das mit der CS scheint überhaupt kein prob zu sein. denn auf die zu ladenden resourcen greift er wirklich erst zu, wenn das laden fertig ist. es scheint irgendwie mit der tbFont zusammen zu hängen, denn wenn ich den text rauslasse und nur ne textur darstelle tritt das prob nicht auf.
wenn ich aber nen text darstelle, dann lädt der 2.thread vollkommen korrekt seine resourcen und der hauptthread rendert seinen ladebildschirm. der wird aber vollkommen zufällig mal weiß, mal grün, mal zu dem bild das es sein soll und mal zur bitmapfont von tbFont.
ich hab mal sämmtliche pointer in die log ausegegeben. da ändert sich nix ??? ich verstehs nich
Es gibt Probleme, die kann man nicht lösen.
Für alles andere gibt es C++...

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

10

08.12.2005, 21:55

Machst du ihrgendwas mit dem TBFont Kram in dem 2. Thread? Oder anders gefragt, wo nutzt du denn die TBFont Klasse.
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.

Werbeanzeige