Warum schlafen alle meine Threads mit sleep ()?

Ich habe den folgenden Code zum Thema Threading unter Linux im Web gesehen. Aber wenn ich es laufen lasse, scheinen alle Threads zu schlafen, anstatt nur der Haupt-Thread. Warum? Auch ohne sleep (5) wird die Anweisung "Thread erfolgreich erstellt" dreimal statt zweimal ausgeführt. Kann jemand bitte dieses Verhalten erklären? Dank Kompiliert mit: gcc -pthread check.c

und mein O / P: Erste Thread-Verarbeitungn Thread erfolgreich erstelltn Zweite Thread-Verarbeitungn Thread erfolgreich erstelltn

Die ersten beiden Zeilen werden mit einer Verzögerung von 5 Sekunden und die nächsten 2 nach weiteren 5 Sekunden gedruckt. Warum werden die untergeordneten Threads anstelle der Haupt-Threads geschlafen?

#include<stdio.h>
#include<string.h>
#include<pthread.h>
#include<stdlib.h>
#include<unistd.h>
pthread_t tid[2];

void* doSomeThing()

{
    unsigned long i = 0;
    pthread_t id = pthread_self();

    if (pthread_equal(id,tid[0]))
    {
        printf("\n First thread processingn");
    }
    else
    {
        printf("\n Second thread processingn");
    }
    return NULL;
}
int main(void)
{
    int i = 0;
    int err;
    while (i < 2)
    {
        err = pthread_create(&(tid[i]), NULL, &doSomeThing, NULL);
        sleep(5);
        if (err != 0)
            printf("\ncan't create thread [%s]", strerror(err))
            else

                printf("\n Thread created successfullyn");
        i++;
        // sleep(5);
    }
    pthread_join(tid[0],NULL);
    pthread_join(tid[1],NULL);

    return 0;
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage