Mehrfache Ausführung derselben Thread-Subroutine beim Kommentieren von pthread_join für diesen Thread [duplizieren]

Diese Frage hat hier bereits eine Antwort:

pthread: Eine printf-Anweisung wird zweimal im untergeordneten Thread gedruckt 3 Antworten

Ich bin neu im Threading. Hier, wenn ich pthread_join (thread1, NULL) kommentiere, dann bekomme ich in der Ausgabe manchmal

<code>    Thread2
    Thread1
    Thread1
</code>

Ich bin nicht in der Lage zu verstehen, warum Thread1-Ablaufverfolgung zweimal kommt und was die genaue Funktionalität von pthread_join ist.

Lesen Sie auch ein Tutorial zu Threading-Konzepten für Anfänger.

<code>    void *print_message_function( void *ptr );
    main()
    {
            pthread_t thread1, thread2;
            char *message1 = "Thread 1";
            char *message2 = "Thread 2";
            int  iret1, iret2;
            iret1 = pthread_create( &thread1, NULL, print_message_function, (void*) message1);
            iret2 = pthread_create( &thread2, NULL, print_message_function, (void*) message2);
            pthread_join( thread1, NULL);

            pthread_join( thread2, NULL); 

            printf("Thread 1 returns: %d\n",iret1);
            printf("Thread 2 returns: %d\n",iret2);
            exit(0);
    }

    void *print_message_function( void *ptr )
    {
            char *message;
            message = (char *) ptr;
            printf("%s \n", message);
    }
</code>

Antworten auf die Frage(2)

Ihre Antwort auf die Frage