Basicamente crio threads passando como argumento das mesmas seu id e um tempo de espera que é sorteado por meio de um rand. Espero que ajude um pouco na compreensão do que são threads.
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
struct valor{
int tempo;
int id;
};
void *espera(void *tmp){
struct valor *v = (struct valor *) tmp;
sleep(v->tempo);
printf("Oi eu sou a thread %d esperei %d segundos antes de executar\n",v->id,v->tempo);
}
int main(){
pthread_t linhas[10];
int execute,i;
struct valor *v;
srand(time(NULL));
for (i=0;i<10;i++){
v = (struct valor *) malloc(sizeof(struct valor *));
v->tempo = (rand()%10)+2;
v->id = i;
printf("Criei a thread <%d> com tempo <%d>\n",i,v->tempo);
execute = pthread_create(&linhas[i],NULL,espera,(void *)v);
}
pthread_exit(NULL);
}
[4] Comentário enviado por rafastv em 14/01/2008 - 23:57h
O 2° parametro pode ser usado para controlar atributos de uma thread específica, como regras de escalonamento e prioridade. Estes atributos são controlados por um pthread_attr_init normalmente, contudo, se isto não lhe interessa ou não é necessário para seu programa, o NULL resolve.
[7] Comentário enviado por MoisesUNI-BH em 01/06/2008 - 10:29h
Estou tendo problemas com uma thread no meu programa... tô apaiando pra fazer um chat em C usando sockets TCP... trabalho é para segunda... tá osso...
Pois bem... eu criei uma thread que vai ficar rodando um "servidozinho" do cliente na porta 55333 para que outro cliente possa conectar, ou seja, o chat que tô lutando pra fazer tem um servidor que vai gerenciar quem está logado, fornecendo a lista de clientes logados, e o cliente vai ser um "cliente e servidor"!!! Só que, depois que eu disparo a thread, teoricamente, ela tem que ficar em paralelo e meu programa vai continuar executando as proximas linhas, mas a porcaria aki tá parando na thread!!! É assim mesmo? :(