ol_autoyield() ou timeslic (dosidle()) ?????

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
adilson
Usuário Nível 2
Usuário Nível 2
Mensagens: 93
Registrado em: 01 Fev 2008 07:02
Localização: americana - sao paulo

ol_autoyield() ou timeslic (dosidle()) ?????

Mensagem por adilson »

Boa Tarde Pessoal,

Existe alguma diferenca entre as duas funcoes acimas sitadas??

Eu Estou usando por exemplo a ol_autoyield(.t.) , e tb existe a dosidle() do timeslic do maligno

tem alguma vantagem ou desvantagem entre uma e outra ??


+1 vez obrigado

abraços
Burroughs L3000 (4 kb ram) e B700,Labo 8034-8038 (Basic Nixdorf),Apple II plus,Clipper 5.2e e começando com xharbour 0.99.70
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Em termos de código, a FreeTSlice() utiliza o evento do teclado para disparar a função que devolve o controle da CPU ao sistema operacional. Como a idéia é evitar que o Clipper se perca no processo de coleta de lixo, que é o que consome CPU em excesso, nada mais racional que devolver a CPU no momento em que essa coleta de lixo estiver para ser feita: no evento de teclado. O problema morre na raiz.

Do seu lado, a função OL_AutoYield() também devolve o controle da CPU ao SO usando o mesmo artifício, mas isso é feito por um evento que é executado de tempos em tempos. Ou seja, ela tenta devolver a CPU ao SO em momentos em que isso sequer poderia ser feito.

Em termos práticos, pela minha experiência, digo que a FreeTSlice() nunca me falhou, mas a OL_AutoYield() por vezes não funcionou como deveria. Mas há quem use sem problema. Experimente uma. Se não funcionar certinho, use a outra. :)
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Responder