Oi amigos, vim colocar mais um problema que percebi esses dias:
Bem quanto ao uso intensivo da CPU por parte do Clipper todo mundo já sabe e é um problema que facilmente resolvido com o uso da FreeTSlice(20), quanto a CA-Tools, basta usar a lib que funciona em modo protegido (CTP.LIB ou CTP52.LIB) que tmb o problema está resolvido, no entanto parece que nem todas as funções da LIB, mesmo em modo protegido e com o uso da FreeTSlice() estão imunes de provocar o uso intensivo da CPU.
No meu caso tenho uma função de Menu próprio que me permite dar facilmente ao usuário administrador do programa gerenciar os acessos dos outros usuários por meio do próprio menu, de forma que com o simples uso da Barra de Espaço, além do controle por nível, ele possa dizer quais funções determinado usuário pode ou não acessar; só que tenho tmb como quase todo programa Clipper tem, algumas funções residentes chamadas por meio de teclas de função em qualquer parte do programa, como a calculadora por exemplo. Ai começa a questão pois se eu usar o Inkey() para ler quais teclas pressiono durante o Menu, não é permitido o uso de teclas de funçao, pois o Inkey ler estas teclas e retorna para a variável que uso, mas não as aciona mesmo sendo uma tecla de uma função residente, em virtude disso, tive que usar a InkeyTrap() da CA-Tools que permite o envio das teclas pressionadas para a variável, exceto as teclas de função residentes, no entanto, como o menu é uma função que mt vezes fica em uso constante, pois acotece do usuário entrar, mas não ir a nenhuma rotina específica, mas ficar no menu, e essa função da CA-Tools (InkeyTrap()) provoca um uso de 60% a 85% da CPU direto.
Lembro a todos que uso o FreeTSlice(), a lib da CA-Tools é a que funciona em modo Protegido, e que só acontece com essa função InkeyTrap(). Já consegui uma alternativa para resolver o problema, mas alguém sabe por que isso acontece???
Um abraço a todos e fico na espera
InkeyTrap() da CA-Tools uso intensivo da CPU c/ FreeTSlice()
Moderador: Moderadores
InkeyTrap() da CA-Tools uso intensivo da CPU c/ FreeTSlice()
Vivendo, Aprendendo e Ensinando!!!
------------------------------------------
" É melhor se arrepender de um erro tentanto acertar do que se lastimar de nunca ter tentado "
------------------------------------------
" É melhor se arrepender de um erro tentanto acertar do que se lastimar de nunca ter tentado "
Seja que tipo de programa que for, mesmo usando a FreeTSlice() (nada a ver com modo protegido ou real), se você tem funções em background que não dão "refresco" pro processador, não há o que fazer, a não ser mudar sua forma de trabalho. Um exemplo que vi há muito tempo, logo que fiz essa função: um colega usou e não adiantou absolutamente nada. Após alguns questionamentos, descobrimos que ele tinha um monte de código pendurado em background. Aí não tem Cristo que dê jeito. Vai consumir CPU mesmo. Isso não quer dizer também que não se possa ter código rodando em background. Eu mesmo tenho um monte. Mas fiz minha própria Inkey() justamente pra evitar essa sobrecarga.
Nunca usei essa InKeyTrap(), mas você já tentou aumentar o <delay> da função?
Nunca usei essa InKeyTrap(), mas você já tentou aumentar o <delay> da função?
[]'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!
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!

