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