3
respostas

duvida sobre thread.sleep

fala ae pessoal, deixa eu ver se entendi o motivo de ter que colocar uma thread para dormir, enquanto ela esta executando esta consumindo processamento correto? eu coloco ela para dormir para poder liberar esse processamento né? quando esse processamento é liberado a outra instruçao do programa é executada?(essa é minha duvida) ou seja,o trecho de código logo abaixo daquele loop que verfica se a thread ainda esta executando .

3 respostas

Luan, tudo bem contigo?

Sim correto. O detalhe importante é o seguinte. A função Sleep() coloca para dormir a Thread principal do programa. Por que o tempo da CPU entre uma verificação e outra é muito pequeno, e quando o programa principal fica repetindo esta pergunta, ele usa intensamente a CPU e atrasa todo o programa.

Entenda que no exemplo do instrutor as threads: thread_parte1 e thread_parte2 continuam executando em paralelo.

O que esta função faz dormir é a thread principal da aplicação. Faz ela dormir ou pausar, no exemplo, por 250ms antes de verificar novamente se a thread_parte1 e thread_parte2 concluíram a execução.

Conforme mostra o resultado do instrutor, o tempo de execução total cai de 48 para 29 segundos!

Espero ter ajudado! Um abraço e bons estudos.

oi marco, vlw pela explicação cara, acho que compreendi oq vc falou , na verdade o programa possui tres linhas de execuçao contando com as duas threads ne? oque a funçao sleep faz e dormir é dormir aquela linha que executa o loop while, é isso que ocorre?

Exatamente Luan, é isto mesmo!