Return-Werte aus pthreads
-
Hallo!
Ich möchte mittels pthreads threads erzeugen. Jeder für sich soll eine funktion abarbeiten. Diese Funktion soll aber einen Wert zurück geben. Geht das überhaupt mit (p)threads?? Oder wie mache ich das überhaupt. Die einzige Idee mir in den Sinn gekommen ist, den späteren Rückgabewert als Attribut zu speichern und nach Ablauf des Threads diesen aus dem Objekt zu holen.
Jemand eine andere Idee?
Gruß Sdy
-
Um den Rückgabewert festzulegen, rufst du entweder
pthread_exit (rückgabewert);auf oder gibst in deiner Thread-Funktion den Rückgabewert einfach mitreturn rückgabewert;zurück.
Mit:void *ret; pthread_join (threadID, &ret); int ret = *((int*) ret);kommst du an den Rückgabewert (wobei du
intals Datentyp natürlich anpassen kannst.
-
void *ret; pthread_join (threadID, &ret); int ret = *((int*) ret);das ist die lösungsvariante mit dem pthread_exit() oder?!
Aber eines ist mir dabei noch unklar. Wenn ich den Thread mit create starte und ich definiere die den Pointer in dem Aufrufer, dann weiß der Thread ja nichts von der Variablen, oder irre ich mich da?
-
Den Pointer gibst du entweder mit
returnzurück, oder du rufstpthread_exitauf.