Seite 1 von 1

Kommunikation zwischen Threads

Verfasst: 30. Mai 2007 21:13
von taraquedo
Hallo!

Ich habe in einem Thread ein Objekt, welches ich dem Hauptprogramm gerne mit der Warteschlangen signal-slot Methode übergeben würde. Der Haken an der Sache ist, das dieses Objekt im Thread nicht mehr benötigt wird und ich es gerne löschen würde.

Code: Alles auswählen

   // Im Thread
   emit receivedFrame(processingFrame);
   delete processingFrame;
   processingFrame = NULL;
Der Zugriff im Hauptprogramm auf das übergebene processingFrame funktioniert natürlich nicht, da dieses dann schon gelöscht ist.

Wie kann ich vorgehen?

Grüße!

Verfasst: 31. Mai 2007 07:20
von macman
Nicht löschen. Wenn Du etwas löscht, dann ist es weg und Du kannst von anderer Seite nicht mehr drauf zugreifen.

Verfasst: 31. Mai 2007 11:52
von taraquedo
Hi!

Ich habe jetzt einen Copy-Konstruktor erstellt und zunächst das Objekt in ein anderes kopiert, welches ich dann übergeben habe. Aber ich glaube ich habe da viel zu kompliziert gedacht:
Kann man nicht auch einfach den new Operator erneut aufrufen. So in der Art

forever {
objekt = new MyObject();
// objekt benutzen
// delete objekt; verzichtet
}

Dann müsste der Speicher ja belegt bleiben und den Copy-Konstruktor kann ich mir dann schenken. Oder ist diese Lösung unsauber? Das wäre dann ja so, wie du es meinst, wenn ich das richtig verstehe.

Grüße!

Verfasst: 31. Mai 2007 12:24
von macman
taraquedo hat geschrieben:Kann man nicht auch einfach den new Operator erneut aufrufen. So in der Art

Code: Alles auswählen

forever {
   objekt = new MyObject();
   // objekt benutzen
   // delete objekt; verzichtet
   }
Korrekt. Allerdings würde ich dem MyObject einen Parent übergeben, dann geschieht das löschen von alleine, wenn Parent verschwindet.