Kommunikation zwischen Threads

Alles rund um die Programmierung mit Qt
Antworten
taraquedo
Beiträge: 36
Registriert: 1. März 2007 13:07

Kommunikation zwischen Threads

Beitrag 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!
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Nicht löschen. Wenn Du etwas löscht, dann ist es weg und Du kannst von anderer Seite nicht mehr drauf zugreifen.
taraquedo
Beiträge: 36
Registriert: 1. März 2007 13:07

Beitrag 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!
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag 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.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
Antworten