Почему все мои потоки спят с помощью sleep ()?

Я видел следующий фрагмент кода относительно потоков в Linux в Интернете. Но когда я запускаю его, кажется, что все потоки спят, а не только основной поток. Зачем? Кроме того, без sleep (5) оператор «Поток успешно создан» выполняется 3 раза вместо 2? Может кто-нибудь объяснить, пожалуйста, это поведение? Спасибо Скомпилировано с использованием: gcc -pthread check.c

и мой o / p: Обработка первого потока. Тема успешно создана. Обработка второго потока. Тема успешно создана.

Первые две строки печатаются с задержкой в ​​5 секунд, а следующие 2 - еще через 5 секунд. Почему дочерние темы спят вместо основных?

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

Ответы на вопрос(1)

Ваш ответ на вопрос