Ist es in Ordnung, pthread_exit von main aufzurufen?

Wenn ich anrufepthread_exit vonmain, das Programm wird niemals beendet. Ich habe erwartet, dass das Programm beendet wird, da ich den einzigen Thread des Programms beendet habe, aber es funktioniert nicht. Es scheint aufgehängt.

#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 Explore zeigt, dass sich der (einzige) Thread in @ befindWait:DelayExecution Zustand

Gemäßpthread_exit Dokumentation:

Der Prozess wird mit dem Beendigungsstatus 0 beendet, nachdem der letzte Thread beendet wurde. Das Verhalten soll so sein, als ob die Implementierung exit () mit einem Nullargument zum Zeitpunkt der Beendigung des Threads aufgerufen hätte.

Ich benutze Dev-C ++ v4.9.9.2 und pthreads-win32 v2.8.0.0 (Verknüpfung gegenlibpthreadGC2.a).

Die Bibliothek scheint in Ordnung zu sein (zum Beispiel @ aufrufpthread_self oderpthread_create vonmain funktioniert gut)

Gibt es einen Grund für das, was ich nicht nennen sollpthread_exit vonmain?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage