Почему все мои потоки спят с помощью 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;
}