Ich arbeite an einem Projekt, in dem ich einen Hauptthread und einen Daemon-Thread habe, um Dateiausgaben durchzuführen. In meinem Hauptthread habe ich ein Feld pthread_t * _daemon
, das ich löschen möchte, aber natürlich erst nach _daemon
gibt NULL zurück (ich verstehe, dass pthread_exit()
Speicherverluste verursachen).Löschen eines Daemon-Threads erst nach der Rückgabe
Wie kann ich es ohne busy-warte tun? Wenn ich versuche, eine Zustandsvariable zu verwenden, habe ich ein Problem - Wenn ich signal()
Form _daemon
anrufe, um meinen Hauptfaden aufzuwecken, löscht es _daemon
, bevor es _daemon
NULL zurückgibt.
Was ich getan habe, ist nur eine Mutex-Sperre verwenden, die gesperrt ist, wenn das Programm gestartet und entsperrt wird, bevor _daemon
zurückgibt. Gibt es einen besseren Weg, der nicht zu viel Zeit in Anspruch nehmen würde?
'pthread_join'? – Mat
Es ist nicht klar, was Sie fragen. Was genau möchten Sie löschen? –
Das Feld pthread_t, aber nur nach dem dort gespeicherten Daemon-Thread gibt – yotamoo