[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico] [Índice de assunto]

Re: Duvidas no EP2



Na verdade so ocorreram alguns erros "conceituais"
mesmo...

No primeiro problema eu simplesmente criei uma struct
timezone e passei como parametro.

No segundo problema, tinha esquecido duas coisas:

1) esqueci de dar um pthread_detach apos criar a
thread carro.

2) demorei pra perceber que o pthread_cond_timewait,
quando acaba o tempo de espera, pega o lock do mutex
de novo automaticamente, mas nao o libera!

Enfim... Como eu ja li uma vez "Talvez sua vida sirva
apenas de aviso para a geracao futura" :-)


--- Rodrigo Vieira Couto <rcouto@linux.ime.usp.br>
wrote:
> Ola!
> 
> Acreditem ou nao... passei pelos mesmos problemas.
> 
> On Wed, 8 May 2002, Jay Clei Garcia dos Santos
> wrote:
> 
> JCGdS> Ok, algumas duvidas no EP2...
> JCGdS> 
> JCGdS> 1) no exemplo do man pthread_cond_timedwait
> ele chama a funcao
> JCGdS> gettimeofday da seguinte maneira:
> JCGdS> 
> JCGdS> struct timeval now;
> JCGdS> ...
> JCGdS> gettimeofday(&now);
> JCGdS> 
> JCGdS> So que segundo o manual do gettimeofday voce
> tambem tem que passar como
> JCGdS> parametro uma struct timezone (e realmente,
> se eu compilo passando
> JCGdS> um so parametro ele da erro). Como eu devo
> inicializar essa struct???
> 
> A gettimeofday nao precisa receber... passe um NULL
> para ela e ela usarah
> a timezone padrao.
> 
> JCGdS> 2) Estou fazendo o seguinte:
> JCGdS> 
> JCGdS>   gettimeofday(&agora, &zona);
> JCGdS> 
> JCGdS>   tempo.tv_sec = agora.tv_sec + 5;
> JCGdS>   tempo.tv_nsec = agora.tv_usec * 1000;
> JCGdS>   pthread_mutex_lock(&mutex_da_thread);
> JCGdS>   pthread_cond_timedwait(&dummy,
> &mutex_da_thread, &tempo);
> JCGdS> 
> JCGdS>   //aqui vem algumas impressoes de teste
> JCGdS> 
> JCGdS> quando eu rodo o programa, ele imprime
> imediatamente TODOS os testes de
> JCGdS> todas a threads! E pior, se eu coloco isso
> num loop infinito
> JCGdS> (while(1)) ele imprime uma so vez e sai.
> JCGdS> 
> JCGdS> Alguem pode me ajudar???
> 
> Nao sei se foi seu caso, mas comigo foi um breve
> relapso: confundi usec
> (microsegundo, 10^-6) com msec (milisegundo,
> 10^-3)... xinguem-me de
> burro... mas acontece! heaheahae
> 
> Espero que tenha ajudado,
> 
> 	Rodrigo Couto
> 
>                    .-.
>                   /|||\
>          .-.     /|||||\     .-.         
> .-----------------------------.
>   .-.   /|||\   /|||||||\   /|||\   .-.   |   
> Rodrigo Vieira Couto     |
>  /|||\ /|||||\ /|||||||||\ /|||||\ /|||\ 
> >-----------------------------<
> <|||||x|||||||X|||||||||||X|||||||x|||||> |
> undergrad - bcc - ime - usp |
>  \|||/ \|||||/ \|||||||||/ \|||||/ \|||/  | 
> rcouto@linux.ime.usp.br    |
>   `-'   \|||/   \|||||||/   \|||/   `-'   |    
> rvcouto@ime.usp.br      |
>          `-'     \|||||/     `-'         
> `-----------------------------'
>                   \|||/
>                    `-'
> 


__________________________________________________
Do You Yahoo!?
Yahoo! Health - your guide to health and wellness
http://health.yahoo.com