Wenn ich pthread_exit
von main
aufrufen, wird das Programm nie beendet. Ich erwartete das Programm zu beenden, da ich den einzigen Thread des Programms verließ, aber es funktioniert nicht. Es scheint aufgehängt zu sein.Ist es OK, pthread_exit von main zu rufen?
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
int main(int argc, char *argv[])
{
printf("-one-\n");
pthread_exit(NULL);
printf("-two-\n");
}
Process Explorer zeigt, dass die (nur) Gewinde in Wait:DelayExecution
Zustand befindet.
Nach pthread_exit
Dokumentation:
das Verfahren mit einem Ausgang Status von 0 nach dem letzten Fadenausgang soll habe beendet. Das Verhalten soll sein, als ob die Implementierung exit() mit einem Nullargument bei Thread Beendigungszeit aufgerufen würde.
Ich verwende Dev-C++ v4.9.9.2 und pthreads-win32 v2.8.0.0 (Verknüpfung gegen libpthreadGC2.a
).
Die Bibliothek scheint in Ordnung zu sein (z. B. funktioniert der Aufruf pthread_self
oder pthread_create
von main
funktioniert gut).
Gibt es einen Grund für das, was ich nicht anrufen soll pthread_exit
von main
?
Warum geben Sie nicht 0 zurück? 'Anstelle von' pthread_exit (NULL); '? –
Ich weiß, ich _could_ 'return' oder' exit'. Ich möchte nur wissen, ob es legal ist, den Haupt-Thread durch Aufruf von 'pthread_exit' zu beenden. – user429788
Die Rückkehr von main() unterscheidet sich sehr von der Ausführung von pthread_exit(). Letzterer lässt den Rest der aktiven Threads enden und beendet ihn dann mit dem Rückgabewert 0. Ersterer beendet alles sofort. –