Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
Threads
Wenn man einen Thread in den detach status versetzt, und beim Aufruf von detach ein Fehler auftritt, kann man dann einfach ein perror verwenden und dann ein return, oder muss ich den Thread dann trotzdem noch mit pthread_exit beenden?!? Und in einer Thread-Funktion sollte man exit(EXIT_FAILURE) nicht unbedingt verwenden oder, weil dann der ganze Prozess gekilld wird, aber das will man in den meisten Fällen wahrscheinlich nicht…
[m]perror[/m] kannst du nur dann verwenden, wenn du die [m]errno[/m] vorher setzt. Die [m]pthread_*[/m]-Funktionen machen das nicht. Ob du ein [m]return[/m] oder ein [m]pthread_exit[/m] machen musst, hängt davon ab, in welcher Funktion du dich befindest Ein [m]return[/m] aus der Threadfunktion ist gleichbedeutend mit einem [m]pthread_exit[/m]
Ja, genau. [m]exit[/m] beendet den gesamten Prozess. Dieses Verhalten will man üblicherweise nicht haben.
Hi,
ich mache grade die Programmieraufgabe vom Juli 2012 und stoße auf ein entscheidendes Problem:
Man muss im Laufe der Aufgabe threads starten und diesen eine nummer zuweisen (damit sie ihre Client verbindungen in einem globalen array speichern können).
Außerdem lesen sie Nachrichten von diesen Clients und speichern die in einem Ringpuffer.
Für beides kann man afaik keine statische Allokierung verwenden. Muss man hier echt alles mallocen oder gibt es da eine schönere Variante ?
lusiux danke für deine Antwort.
Muss ich eigentlich jeden Thread entweder joinen oder in den detach-Status versetzen?
Wenn ich einen Thread in den detach-STatus versetzt hab, dann darf ich kein pthread_exit mehr aufrufen oder?
Wenn du keine Speicher-Leaks haben willst, ja. Funktionieren tut es auch ohne. Joinen musst du, wenn du darauf warten willst, dass die Threads sich beendet haben.
Natürlich darfst du dann noch [m]pthread_exit(3)[/m] aufrufen. Das einzige was du nicht mehr aufrufen darfst, ist [m]pthread_join(3)[/m] (und nochmal [m]pthread_detach(3)[/m] auf denselben Thread).
[quote]darkyke
ich mache grade die Programmieraufgabe vom Juli 2012 und stoße auf ein entscheidendes Problem:
[/quote]
juli 2012 Chatserver? siehe: https://fsi.informatik.uni-erlangen.de/forum/thread/10019,4-Klausur-Februar-Juli-2012;nocount
auf der 4 Seite ist meine Implementierung von dem Chatserver.
Allerings ist das ein Jahr her, in dem ich viel mehr gelernt habe