Threadstatus nach dem Beenden auslesen
-
Hi Leute,
Hoffe jemand kann mir bei meinem Problem helfen.
Programmiere in Rahmen meiner Projektarbeit in Betriebssysteme an einem Druckserver welcher verschiedene Clients(TELNET Clients) annimmt und diese dürfen dann Druckaufträge an verschiedene Drucker (Terminals) senden.
Der Server selber ist in einen DISPATCHER aufgeteilt, dieser nimmt die Clients an und startet dann für jeden Client einen Client-Worker-Thread.
Hierzu den Code
void* process_request(void *arg){ // Thread entkoppelt damit der Dispatcher auf diesen nicht warten muss und andere Clients empfangen kann pthread_detach(pthread_self()); } int main(int argc, char *argv[]) { .... hier etwas Code ... /* * DISPATCHER * * Dispatcher horcht auf den Port und empfängt die Clients * startet wiederum für jeden Client einen Threads für die Verarbeitung seiner Sorgen */ while (1) { ... hier wieder etwas code .... int error; // Thread für den Client erzeugen error = pthread_create(&(ri->tid), NULL, process_request, ri); } }
jetzt meine Frage:
Kann ich jetzt irgendwie an den Status von dem Thread kommen. Wenn der Thread geschlossen wird möchte ich, dass der Dispatcher es erfährt damit ich den Client aus meine Clientliste löschen kann. In meine Clientliste stehen alle Client die sich aktuell mit dem Server verbunden haben.
mfg
DigitalDoener
P.S: Danke für die Hilfe
-
Wartet dein dispatcher mit select() auf neue Verbindungen? Wenn ja, kannst du eine pipe einrichten und mit select darauf warten. Ein Thread kann dann seine Information in die pipe schreiben, der dispatcher wird darauf geweckt.