Pessoal, estou fazendo um programa que utiliza a biblioteca pthreads.h, mas estou tendo um problema sério. Depois de resolver todos os erros, meu programa compila, executa a função main sem problemas. O problema tá na função pthread_create. Eu chamo ela, passando a função func, a pthread_create retorna zero, mas não executa a função func. Quando executo o programa, ele imprime "Criou thread!", mas não imprime "Entrou func!"... Alguém tem alguma idéia do por que isso está acontecendo??? Aí está o main: #include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include "logica.h"
#include "io.h"
int main(int argc, char *argv[]){
...
...
Parametro *arg;
arg->c_elevador = c_elevador;
arg->elevador = elevador;
arg->eventos = eventos;
arg->in = in;
pthread_t tid;
error = pthread_create(&tid, NULL, func, arg);
if (error){
printf("Erro ao criar a thread\n");
}
else{
printf("Criou thread!\n");
}
return(0);
}
E aí está a função func:
void* func (void *arg){
printf("Entrou func!\n");
long double out = 0;
movimenta(&(arg->c_elevador), &(arg->elevador), &(arg->eventos), &out);
printf("movimentou!\n");
pthread_exit(NULL);
printf("destruiu thread!\n");
}