thread starten
-
Hallo!
Ich hab folgendes Problem:
Ich hab eine Klasse Computer mit folgender Methode:
uint64 computeNumbersForVector(uint64 begin, uint64 end,
vector<uint64> & ref_to_vector);
Dann hab ich eine Instanz meiner Klasse mainProg, mit dem entsprechenden Vektor.
Da möcht ich jetzt gern einen neuen Prozess starten und die obige Methode mit den entsprechenden Argumenten aufrufen, und dann den Prozess wieder beenden.
Ich weiss, dass ich auch eine Instanz von Computer anlegen könnte und so die Methode aufrufen kann, aber es gibt da Probleme mit der Freigabe von Speicher nach Beenden, und deswegen möcht ichs mal so probieren, weil ja dann automatisch der gesamte Speicher vom Thread wieder freigegeben wird.Lg
Christl
-
christl schrieb:
weil ja dann automatisch der gesamte Speicher vom Thread wieder freigegeben wird.
Falsch. Probleme, die man (echt) lösen kann, soll man nicht umgehen.
-
Wenn du einen neuen Prozess startest (zum Beispiel mit fork()) wird das Ergebnis berechnet und der nicht freigegebene Speicher auch weggeschmissen, wenn sich der neue Prozess beendet, aber du hast das Ergebnis im Ursprungsprozess nicht. Dazu müsstest du irgendeine Kommunikation aufbauen.
Wenn du dagegen einen neuen Thread startest - zum Beispiel mit pthread_create() - wird das Ergebnis berechnet und du kannst nach einem pthread_join() darauf zugreifen, aber der nicht freigegebene Speicher wird nicht weggeschmissen.
Ich würde mich auf die Suche nach dem Speicherloch machen. Valgrind ist zum Beispiel ein gutes Tool dafür.
-
Man kann Speicherprobleme auch einfach ausmerzen.