Threads [RESOLVIDO]

1. Threads [RESOLVIDO]

Alex
Nachi

(usa Fedora)

Enviado em 04/10/2008 - 12:11h

sou iniciante em programação e preciso de ajuda para enteder o codigo do programa abaixo.

#include <stdio.h>
#include <pthread.h>

void *imprime_mensagem(void *ptr);

int main()
{
pthread_t t1, t2;

char *msg1 = "primeiro";
char *msg2 = "segundo";

pthread_create(&t1, NULL, imprime_mensagem, (void*)msg1);
pthread_create(&t2, NULL, imprime_mensagem, (void*)msg2);

return 0;
}

void *imprime_mensagem(void *ptr)
{
char *mensagem = (char *)ptr;
printf("%s ", mensagem);
return NULL;
}

Como eu poderia melhora-lo usando pthread_join ?

Muito Obrigado
Alex


  


2. MELHOR RESPOSTA

felipe gallois
gallois

(usa Debian)

Enviado em 06/10/2008 - 09:54h

info libc tem todas as informações sobre pthreads
para conferir se deu erro,

pthread_t t1;
int r;

r = pthread_create(&t1, NULL, thread_routine, NULL);
if(r) {
/* seu tratamento do erro */;
}

pthread_create retorna um valor diferente de zero em caso de erro, use isso a seu favor =]

esse programa cria duas threads, uma passando como argumento *msg1 e a outra *msg2

as rotinas que elas executam é a mesma, no caso, apenas imprimem uma mensagem na tela, uma parte da mensagem sendo o argumento passado à elas. depois a thread encerra

quando se trabalha com pthreads, você não passa o argumento na mesma chamada do nome da rotina, como você deve ter percebido no pthread_create. o terceiro argumento é o nome da rotina e o quarto é uma void *arg onde você deve fazer todas as conversões necessárias. caso deseje passar vários argumentos, use uma struct.

mas o código tá bem simples e intuitivo. dê uma olhada na info libc para entender a chamada da função pthread_create e não tem muito o que dizer!

abracos

3. Re: Threads [RESOLVIDO]

felipe gallois
gallois

(usa Debian)

Enviado em 04/10/2008 - 23:02h

tem coisa pra mexer nesse teu código, uma delas é que você deve conferir o retorno das threads para ver se não deu erro

sobre os joins, basta colocá-los antes do return, para se assegurar que suas threads vão terminar antes do programa

abracos


4. Re: Threads [RESOLVIDO]

Alex
Nachi

(usa Fedora)

Enviado em 06/10/2008 - 09:13h

Mas como faria para confirir os meus se os meus threads deram erros ?

Obrigado

Alex


5. Re: Threads [RESOLVIDO]

Alex
Nachi

(usa Fedora)

Enviado em 06/10/2008 - 09:36h

Ah outra coisa nao estou entendendo o que o programa esta fazendo vc poderia ser mais especifico no que programa esta realizando ...

Muito Obrigado

Alexandre


6. Re: Threads [RESOLVIDO]

Alex
Nachi

(usa Fedora)

Enviado em 07/10/2008 - 10:27h

Muito Obrigado agora entendi bem o que esta acontecendo !!!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts