Einzelnen Beitrag anzeigen

Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: [Threads] Textureloader - Einige Fragen

  Alt 20. Nov 2008, 17:06
  1. Ja, du musst bei der Queue Critical Sections verwenden (ich vermute, du gibst dem Objekt im Maintthread neue Aufgaben). So, wie ich das sehe, kannst du anstatt der Queue auch eine TThreadList nehmen. Ansonsten musst du die Queue in eine Klasse mit einer Critical Section kapseln. Da gibt es auch schon vorbereitete Klassen in der SyncObj-Unit.
  2. Wenn du nur einen Job zu gleichen Zeit hast, finde ich diese Vorgehensweise i.O. Du solltest hier nur nicht mit suspend und resume arbeiten, sondern den Thread mittels Events warten lassen (waitforsingleEvent). Dieses Event könntest du in deine Warteschlange mit rein implementieren. Dadurch kannst du es automatisch feuern, sobald estwas der Warteschlange hinzugefügt wird.
  3. Du hast Synchronize richtig verwendet. Achte darauf, dass synchronize nur funktioniert, wenn du es in einer EXE hast (nicht in eine DLL legen) Synchronize hält deinen Thread an und sagt dem Application-Objekt, des es demnächst mal die übergebene Methode starten soll. Und wenn das Application-Objekt damit fertig ist, kann dein Thread weitermachen. Dadurch ist eben sichergestellt, dass dein Thread nicht gleichzeitig mit dem Mainthread arbeitet. Der Mainthread kann so gefahrlos auf den Speicher des Threads zugreifen.
  4. Ja. Wenn du Punkt zwei umsetzt kannst du ja auch das Event feuern. Oder ein zweites Anlegen.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat