Einzelnen Beitrag anzeigen

Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#4

Re: "Grundsatzfrage" zur Thread-Programmierung

  Alt 18. Sep 2008, 20:25
Sollte so gehen, aber ich würde das noch etwas verändern.

Um das ganze besser zu trennen und zu vereinfachen, würde ich folgende Striktur vorschlagen:

1. Die ganze Arbeit ist in einer Klasse gekapselt.
Beispielsweise mit 3 Methoden Lesen(), Verarbeiten() und schreiben()

Am Anfang alle 3 Thread erstellen mit Suspended = true; und 4 Objektlists erstellen.

MainThread erstellt 1 Objekt mit den Anfangsdaten. Tut das dann in eine Liste rein und wirft den ersaten Thread an. Der schaut dann in diese Lste rein und nimmt das Objekt da raus (sysnchronisiert). (So kann vom Hauptthread auch nicht mehr darauf zugegriffen werden)
Thread 1 ruft jetzt Objekt.Lesen() auf - welches daraufhin ja im Thread abläuft. Danach kann das Objekt (synchronisiert) in der zweiten Liste abgelegt werden und Thread 2 angeworfen werden.
Jetzt schaut der Thread 1 wieder nach Daten, wenn keine mehr da sind, legt er sich schlafen, sonst fängt er von vorne an.
Währenddessen fängt Thread 2 an, zu arbeiten, und entfernt das Objet aus Liste 2, rift Objekt.Verarbeiten() auf und so weiter

Am Ende landen die Verarbeiteten Objekte dann (von Thread 3) in Liste 4 und du kannst damit wieder machen, was du willst.
  Mit Zitat antworten Zitat