Einzelnen Beitrag anzeigen

Zwoetzen

Registriert seit: 19. Sep 2007
Ort: Ilmenau
93 Beiträge
 
Delphi 2009 Professional
 
#5

Re: [Threads] Textureloader - Einige Fragen

  Alt 21. Nov 2008, 12:25
Danke, hat mir sehr geholfen.

Irgendwie werden nur die Texturen jetzt gar nicht mehr geladen Mir fehlt aber jetzt auch die Zeit, um alles zu prüfen, werde es die nächsten tage nochmal durchgehen


Zu Peek: Neben Pop und Push hat eine Queue auch Peek (oder Top) als Methode, womit man das nächste Element anschauen kann, ohne es direkt mit Pop aus der Queue rauschmeißen zu müssen. Dh das Event muss nicht gefeuert werden, weil nix an der Queue verändert wird
Ich brauche es hier nicht wirklich, habe es nur der Vollständigkeits halber mit hingeschrieben ^^

Zu deinem Kommentar im Execute-Thread:
Wenn er vom Warten zurückkehrt, prüft er doch automatisch durch die umgebende Schleife auf Terminated, sodass eine zusätzliche Prüfung eigentlich nicht nötig sein sollte
Delphi-Quellcode:
procedure TTextureLoader.Execute;
begin
  while not Terminated do begin

    if (FQueue.Count = 0) then
      FQueue.Event.Waitfor(INFINITE);
      // Wenn er zurückkehrt, ist entweder ein neuer Job da, oder der Thread soll beendet werden.
      // Da dies beim nächsten Schleifendurchlauf getestet wird, brauche ich es nicht extra zu behandeln ;)
      // Wobei Terminated Vorrang hat, da zuerst die Schleife, und danach erst die IF-Anweisung geprüft wird
    else begin
      [...]
    end;

  end; // while
end;
____________________
EDIT:

Hab den Fehler gefunden: Wenn man natürlich auch weiterhin den TextureLoader-Thread mit
inherited Create(True); beim Anlegen suspendiert, kann er ja nie zum Zuge kommen. Kaum macht man's richtig, schon funktioniert's

Danke nochmals für deine Hilfe, Sirius
  Mit Zitat antworten Zitat