Por que todos os meus tópicos dormem usando sleep ()?

Eu vi o seguinte trecho de código sobre threading no Linux na web. Mas quando eu o executo, todos os threads parecem dormir, em vez de apenas o thread principal. Por quê? Além disso, sem suspensão (5), a instrução "Thread criado com sucesso" é executada 3 vezes em vez de 2? Alguém por favor pode explicar esse comportamento? Obrigado Compilado usando: gcc -pthread check.c

e my o / p: Primeiro processamento de threadn Thread criado com sucesson Segundo processamento de threadn Thread criado com sucesson

As duas primeiras linhas são impressas com um atraso de 5 segundos e as próximas 2 após mais 5 segundos. Por que os threads filho estão sendo adormecidos em vez do principal?

#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;
}

questionAnswers(1)

yourAnswerToTheQuestion